冒泡排序是針對少許待排數據的一種有效的排序算法,其思想是很是容易理解的:假設待排的數組長度爲N算法
比較先後相鄰的兩個數,若是前面數據大於後面數據,則進行交換數組
將數據進行N-1次比較後,最大的數據就會浮到數組的最後code
將N=N-1,重複以上的步驟排序
代碼實現爲:博客
int bubbleSort_1(int *arr, int len) { int i,j; for (i=0; i<len-1; i++) for (j=0; j<len-1-i; j++) if (arr[j] > arr[j+1]) swap(arr[j], arr[j+1]); return 0; }
後來想到這種算法貌似有改進的地方,並且在CSDN的博客上看到確實有改進的地方。好比:5 1 2 3 4 這個數組,在進行第一趟排序後,數組爲1 2 3 4 5,第二趟排序不進行任何交換操做,這說明該排序已是升序,那麼能夠終止第3趟、第4趟排序。這裏只需設置一個flag標籤,判斷第k次是否進行交換,若是沒有則跳出循環,其代碼以下:class
int bubbleSort_2(int *arr, int len) { int i,j; bool flag = false; for (i=0; i<len-1; i++) { flag = false; for (j=0; j<len-1-i; j++) if (arr[j] > arr[j+1]) { swap(arr[j], arr[j+1]); flag = true; } if (!flag) break; } return 0; }