有時候我們在寫程式時,可能會需要對一組資料進行排序。而關於資料排序的演算法其實有很多種,這裡我們先針對其中一個-Bubble sort 進行討論。
中文常翻成氣泡排序法,高中老師和我們說,氣泡排序法可以想像成海底有一隻魚,他如果吐了一個泡泡,那個泡泡會慢慢的浮出水面,而那個浮出水面的泡泡就是我們已排序好的資料(該次排序的最大值或最小值)。
假設現在我們有一組資料,裡面含五筆數值需要做從小到大的排序,分別是 54、25、30、43、8。
我們會需要兩個迴圈,外層迴圈用 i
控制,內層迴圈用 j
控制。如果把排序一次畫成圖會長下面這樣:
首先,我們要從 index 0(第一個數字)和 index 1(第二個數字)開始比較,因為我們現在是做遞增排序,所以,如果 index 比較小的數值大於 index 較大的數值,就要做交換。做完一次排序後會發現,我們找出了最大值,且最大值會在 index 最大的地方。
然後再繼續做第二次、第三次、第四次的排序,以獲得整組資料的排序結果。
我們會發現,內層迴圈執行的次數會因為已排序的數字變多而變少,而最外層須執行的次數是 N-1 次。(N 是排序的數值數量)
今天介紹了 Bubble sort,讓我們來寫一個小作業吧!
利用 Bubble sort,讓使用者能夠輸入 10 個數字,輸出由小到大的排序結果!