C语言 冒泡排序
冒泡排序( Bubble Sort )
比较相邻的两个数,如果错误则进行交换,重复访问整个排序的数列
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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次