改进的冒泡算法
在百度百科中的代码:
void bubble_sort(int a[], int n) { int i, j, temp; for (j = 0; j < n - 1; j++) for (i = 0; i < n - 1 - j; i++) { if(a[i] > a[i + 1]) { temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp; } } }
改进后:
1 void bubble_sort(int a[], int n) 2 { 3 int i, j, temp; 4 5 for (i = 0; i < n; i++) { 6 for (j = 1; j < n - i; j++) { 7 if (a[i] > a[i + j] ) { 8 temp = a[i]; 9 a[i] = a[i + j]; 10 a[i + j] = temp; 11 } 12 } 13 printf("a[%d] = %d\n", i, a[i]); 14 } 15 }
前数: a[i]
后数: a[i + j]
外循环: 前数
从下标0开始;
内循环: 后数
从下标1开始;
交换(数据)代码:
(1) 把前数赋值给临时变量(temp);
(2) 把后数赋值给前数;
(3) 把临时变量赋值给后数