首頁 >php教程 >PHP开发 >C語言冒泡排序演算法及程式碼

C語言冒泡排序演算法及程式碼

高洛峰
高洛峰原創
2016-12-19 13:35:391457瀏覽

冒泡排序是排序演算法的一種,思路清晰,程式碼簡潔,常被用在大學生電腦課程。

「冒泡」這個名字的由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名。

這裡以從小到大排序為例進行講解。

基本思想及舉例說明

冒泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往後移。經過一輪比較,就選出最大的數;經過第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中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn