冒泡排序通過相鄰比較交換,將大元素逐步「冒泡」到陣列末尾。本文提供標準教學實現,輸入 10 個整數,升序輸出。
#include <stdio.h>
int main() {
int a[10];
printf("input 10 numbers: ");
for (int i = 0; i < 10; i++) scanf("%d", &a[i]);
for (int i = 0; i < 9; i++) { // 趟數
for (int j = 0; j < 9 - i; j++) { // 每趟比較次數遞減
if (a[j] > a[j+1]) {
int t = a[j]; a[j] = a[j+1]; a[j+1] = t;
}
}
}
printf("the sorted numbers:\n");
for (int i = 0; i < 10; i++) printf("%d\t", a[i]);
printf("\n");
return 0;
}
input 10 numbers: 11 2 3 5 34 6 78 9 12 62
the sorted numbers:
2 3 5 6 9 11 12 34 62 78
n-1 趟,內層每趟比較 n-1-i 次(後 i 個已就位)。swapped 標誌位,提前結束(見前文優化版)。理解冒泡排序是掌握排序演算法基石,進而學習快速排序、歸併排序、堆排序等 O(N log N) 高級演算法。