逐次比較。即一次比較兩個數,若它們的順序錯誤,則它們交換;重複進行,直到沒有需要交換為止。以公升序排序為例:
1、比較相鄰數字的大小,若第乙個數比第二個數大,則相互交換;
2、對每一對相鄰的數作相同的工作,那麼最後的數應該是最大的數;
3、針對所有數(除了最後乙個)重複上述步驟,直到沒有任何一對數字需要比較為止。
(需要注意的是,第3條中所謂的「最後乙個」是指前幾步中已經處理過的最大的數,而不是整個數列的最後乙個數)
例如,將下列數列用氣泡排序法從小到大重新排列;
49 38 65 97 76 13 27 49
每次排序後數列的變化如下:
第一趟排序:38 49 65 76 13 27 49 97
第二趟排序:38 49 65 13 27 49 76 97
第三趟排序:38 49 13 27 49 65 76 97
第四趟排序:38 13 27 49 49 65 76 97
經過一系列過程,最終數列次序為:13 27 38 49 49 65 76 97.
#include void bubllesort(int arr, int len)
} }}int main(int argc, char *ar**) ;
for(i = 0 ; i < 7 ; i++ )
bubllesort(arr, 7);
printf("\n");
for(i = 0 ; i < 7 ; i++ )
return 0;
}
演算法基礎 氣泡排序
從數列第乙個數字開始,與相鄰的後一位數字比較,如果前一位數字比後一位大,則置換它們的位置,一輪下來排到最後的是最大的數字,直到數列完全有序。要點 1.每輪排序最大的數字會被置換到最後,下一輪就不需要再對比這個數字了。因此第一輪需要對比n 1次,第二輪需要n 2次,第x輪只需要對比n x次。2.如果數...
演算法基礎 氣泡排序
氣泡排序是一種經典的排序演算法,可能是我們學習過程中學習到的第乙個排序演算法。氣泡排序,顧名思義,一輪一輪把小元素從後面替換到前面 或者是大元素逐步替換到後面 的一種演算法。假如有乙個長度為10的陣列array,程式會進行n輪掃瞄,第一輪掃瞄會從array 0 到array 9 進行掃瞄,若存在前面...
基礎演算法 氣泡排序
氣泡排序 bubble sort 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算法的...