冒泡排序是排序演算法的一種,思路清晰,程式碼簡潔,常被用在大學生電腦課程。
「冒泡」這個名字的由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名。
這裡以從小到大排序為例進行講解。
基本思想及舉例說明
冒泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往後移。經過一輪比較,就選出最大的數;經過第2輪比較,就選出次大的數,以此類推。
下面以對 3 2 4 1 進行冒泡排序說明。
第一輪排序過程
3 2 4 1 (最初)
2 3 4 2 (比較3和2,交換) (比較4和1,交換)
第一輪結束,最大的數4已經在最後面,因此第二輪排序只需要對前面三個數進行再比較。
第二輪排序過程
2 3 1 4 (第一輪排序結果)
2 3 1 4 (比較2和3,不交換)
2 1 3 4 (比較2和3,不交換)
2 1 3 4 (比較23和1,交換第二個,第二大的數字已經排在倒數第二個位置,所以第三輪只需要比較前兩個元素。 4 (比較2和1,交換)
至此,排序結束。比較(R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-1], R[ N]) ; 最大的元素會被移到R[N]上。 R[3], R[4]), ……. (R[N-2], R[N-1]);第二大元素會被移到R[N-1]上。 。 。 N-1輪比較;而最佳化實現,在數組已經排序好的情況下,會提前退出比較,減小了算法的時間複雜度。及程式碼相關文章請關注PHP中文網!