bubblesort(int a[],int N){
int temp = 0;
int flag = false;//判断是否发生交换
for(int i=0:i<N-1;i++){ //< 少一次,-1少一次,从0开始加一次==数组长度-1
for(int j =0;j<N-1-i:j++){
if(a[j] > a[j+1]){
flag = true;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
if(!flag){
break;
}
else{
flag = true;
}
}
注意循环次数:
外层循环==比较的趟数==数组长度N-1
内层循环==每次比较的次数==数组长度N-1-当前趟数(0代表第一趟)
比较时借助宽度为2的窗口,比较相邻两个元素的大小
a[] = {3、-6、1、-2、5}
第一趟:
1:-6 3 1 -2 5
2:-6 1 3 -2 5
3:-6 1 -2 3 5
4:-6 1 -2 3 5
趟数 | 比较次数 |
1 (0) | 4 |
2 (1) | 3 |
3 (2) | 2 |
4 (3) | 1 |