关于冒泡排序循环条件的?谢指教。。

来源:百度知道 编辑:UC知道 时间:2024/09/25 22:27:59
for(int i=0;i<ia.length-1;i++){
//控制比多少次,如length为10 ,则比9次,0-8
for (int j=ia.length-1;j>i;j--){
//具体比相邻的两个字,调整位置
count++;
if(ia[j]>ia[j-1]){
int temp=ia[j];
ia[j]=ia[j-1];
ia[j-1]=temp;
}
}
请问我的注释意思对吗?
还有就是,在内层循环里为什么条件是j>i,我试过j>0也行,不过效率不高,要多循环几次,请说说j>i是什么意思?

首先你得弄清在冒泡排序中两个循环的作用,,,
第一个循环是每循环一次产生一个最值,
而第二个循环是每产生一个最值里面相邻数据要不断交换,,
而每当产生一个最值里,,相邻数据交换次数就会减少一次(这个要画画图来理解吧)
所以,,当第一个FOR循环每执行一次变量i就会增加1从而第二个FOR在条件j>i;j--情况下循环次数就会减少,,,,,而你如果将i换为0,那每次都进行同样的循环次数,而其中有些是次数是多出来的没必要的,,

J>I
因为外循环I,已经是排序好的,J>I,就是说<I的那部份不用管它,因为已经排好,J>0当然也可以,只是当J<=I的时候,已经是在作无用功.