C程式設計——氣泡排序
阿新 • • 發佈:2018-12-21
1、程式檔案
#include <stdio.h> // 兩兩交換 void mySwap(int *a, int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } // 氣泡排序 void mySort(int *a, int len) { int i; int j; // 第一次迴圈遍歷整個陣列,找出最大值下沉 // 第二次則遍歷整個陣列減一的長度,找到其中的最大值下沉 for (i = 0; i < len - 1; i++) { for (j = 0; j < len-1-i; j++) { if (a[j] > a[j+1]) { mySwap(a, j, j+1); } } } } // 遞迴 void mySort1(int *a, int len) { if (1 == len - 1) { return; } int i; for (i = 0; i < len-1; i++) { if (a[i] > a[i+1]) { mySwap(a, i, i+1); } } mySort1(a, len-1); } // 列印 void myPrint(int *a, int len) { int i; for (i = 0; i < len; i++) { printf ("%4d", a[i]); } printf ("\n"); } // 主函式 int main() { int a[] = {9,8,7,6,5,4,3,2,1,0}; int len; len = sizeof(a)/sizeof(a[0]); mySort(a, len); // mySort1(a, len); myPrint(a, len); return 0; }
2、測試結果
[email protected]:/mnt/hgfs/shared-lj# ./a.out
0 1 2 3 4 5 6 7 8 9