C語言 冒泡排序
阿新 • • 發佈:2017-08-17
acf %d efi 語言 lap 次數 int code 錯誤
冒泡排序( Bubble Sort )
比較相鄰的兩個數,如果錯誤則進行交換,重復訪問整個排序的數列
#include <stdio.h> #define KSIZE 8 static int count; // 冒泡排序 void bubble_sort(int a[],int n); int main(int argc, const char * argv[]) { int number[KSIZE] = {1,2,3,4,5,6,7,8}; int i; bubble_sort(number, KSIZE); printf("排序次數:%d\n冒泡排序",count); for (i=0; i<KSIZE; i++) { printf("%d ",number[i]); } return 0; } void bubble_sort(int a[],int n) { int i,j,temp; for (j = 0; j<n-1; j++) for (i=0; i<n-j-1; i++) if (a[i] < a[i+1]) { // 從大到小 temp = a[i]; a[i]= a[i+1]; a[i+1] = temp; count++; } }
解析
1,2,3,4,5 — 希望得到:5,4,3,2,1
2,3,4,5,1 - 第一次排序 — 4次
3,4,5,2,1 - 第二次排序 - 3次
4,5,3,2,1 - 第三次排序 - 2次
5,4,3,2,1 - 第四次排序 - 1次
C語言 冒泡排序