对于冒泡排序的理解
public class ArrayDemo5 {
public static void main(String[] args) {
int[] b = {125,5899,666,354,851};
maopao(b);
for (int i = 0; i <b.length ; i++) {
System.out.print(b[i]+"\t");
}
}
public static int[] maopao(int[] a){
int temp = 0;
for (int i = 0; i <a.length-1 ; i++) {
for (int j = 0; j <a.length-1-i ; j++) {
if (a[j + 1] > a[j]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
return a;
}
}
心得:冒泡排序最迷惑人的地方就是数组的个数,进行排序的轮数,还有每一轮进行交换的次数,这三者之间的关系。因为数组是从0开始,所以我们只能用0来开始进行第一轮比较(注意是第0轮而不是第一轮),所以进行排序的轮数就是数组的个数-1,那么每一轮交换的的次数与数组个数还有轮数有什么关系呢?显然每一轮交换的次数就是数组的个数-1-轮数(这里的轮数是从0开始的而不是1)。比如5个数那么就只需要进行4轮比较,在第一轮比较的时候交换4次就可以确定一个数了,第二轮比较的时候数字交换3次就可以了以此类推。
浙公网安备 33010602011771号