具有12个记录的序列,采用冒泡排序,最少的比较次数是()?

2025年03月18日 17:04
有1个网友回答
网友(1):

当然是11了,题目问的是最少次数,此时如果12个记录是有序的,则进行11次比较就结束了。
当然你说66的话,也可以和出题的人犟:理由,采用没有经过改进的冒泡确实是66次。
11次:在算法中增加了一个boolean flag来表示每一趟是否发生过交换,这样一来有序的序列在第一趟的排序没有交换过,则不用进行第二趟,因此只比较11次。

哦,可能我叙述的不清楚,我把代码给你,就应该清楚了.
int[] a=new int[]{1,2,3,4};
boolean flag=false;
for(int i=0;i if(flag==false&&i>0){
break;
}
for(int j=i+1;j if(a[i] int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
flag=true;
}
}
}
在第一遍比较时,没有发生交换,则flag仍然为false,则第二遍不进行比较了,因此为11次.