冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。如此下去,重復以上過程,直至最終完成排序。 c代碼實現如下: [cpp] #include <stdio.h> //打印數組 void display(int array[],int size){ printf("the array is:"); int i; for(i=0;i<size;i++){ printf("%d ",array[i]); } printf("\n"); } //冒泡排序算法 void sort(int array[],int size){ int i,j,temp,flag; for(i=0;i<size;i++){ flag = 0; for(j=size-1;j>i;j--){ //如果前一個數大於後一個數,則交換 if(array[j-1]>array[j]){ temp = array[j]; array[j] = array[j-1]; array[j-1] = temp; flag = 1; } } //如果本次排序沒有進行一次交換,則break,減少了執行之間。 if(flag == 0){ break; } display(array,size); } } int main(void){ int array[10]={34,45,1,39,21,68,65,100,4,51}; display(array,10); sort(array,10); return 0; }