public static void bubbling(int... i){
//判断的末尾每次循环末尾都会排好一个
for(int n = i.length; n > 0; n--){
//如果经历1轮比较f没有被改变,说明此数组已经不需要再比较了
boolean f = false;
//从第一个开始遍历一直到排好的那一个前一个
for(int m = 0; m < n -2; m++){
//判断大的后移
if(i[m] > i[m+1]) {
int max = i[m];
i[m] = i[m+1]; //小的前调
i[m+1] = max; //大的后移
f = true; //已经对数组进行改变了改变f的值
}
}
//如果经历1轮比较f没有被改变,说明此数组已经不需要再比较了
if(f == false){
break;
}
}
}
理解:加一个值来判断,当有数据被移动时改变该值说明还需要继续比较。如果进行了一轮循环该值都没有被改变说明这一轮的数据都是排列好了,后续不应该再判断了。