冒泡排序,对于这个算法来说是非常贴切的名称。这个算法的基本思路就是让数组想水中的气泡一样小的往上浮,大的往下沉淀。从而使得数组有序。做法很简单:如果数组为an第一次循环整个数组长度n一旦发现相邻的两个数坐标大的比较小那么就交换数据保证大的数坐标比较大,就这样一直比较到最后一个数,那么一定有a[n] = Max {an};那么下一次循环就减一次,这样a[n-1]就是除了Max {an}以外最大的数。这样完成一趟又一趟交换之后就使得整个数组有序。
代码如下:
1 void bubble_sort(int array[], int n) 2 3 { 4 5 int tmp, tlen; 6 7 8 9 while(n) 10 11 { 12 13 tlen = 0; 14 15 16 17 for(int i = 1; i < n; ++i) 18 19 { 20 21 if(array[i - 1] > array[i]) //如果数标大的数小则交换数据 22 23 { 24 25 tlen = i; 26 27 28 29 // 交换元素(swap) 30 31 tmp = array[i]; 32 33 array[i] = array[i - 1]; 34 35 array[i - 1] = tmp; 36 37 } 38 39 } 40 41 42 43 // 刷新待排数组长度 44 45 n = tlen; 46 47 } 48 49 }
这个算法比较简单,我就懒得多说了