18.利用氣泡排序法(Bubble Sort)將數列資料(3,5,9,4,7)依遞增順序排序,在第一次排序循環結束後,此數列變成下列何者?
(A) (3,5,4,9,7)
(B) (3,5,4,7,9)
(C) (5,3,4,9,7)
(D) (5,3,9,4,7)
統計: A(282), B(944), C(124), D(92), E(0) #1431516
詳解 (共 4 筆)
泡泡排序法的原理是將一組數字中的第一位與後一位相比較,若後一位數字較大,則位置對調,再將第二位數與第三位數做比較,若後一數字較大,再對調位置
35947→35947→35947→35497→35479
比如說:
4 3 2 5 1,五個數字比較的話,第一位與第二位比較,也就是4與3做比較,比較結果成為
3 4 2 5 1,再比較第二位跟第三位數,也就是4與2比較,比較結果為
3 2 4 5 1,再比較第三跟第四位數,也就是4與5比較,但是由於4比5小,所以比較結果不變
3 2 4 1 5,再比較第四跟第五位數,也就是5與1比較,比較結果為
以上為第一輪比較結果,由於並沒有完成排列順序,故接著第二輪的比較
3 2 4 1 5,重新比較第一與第二位數,3與2比較,比較結果為
2 3 4 1 5,再來第二位與第三位比較,3與4比較,3比4小,比較結果不變
2 3 4 1 5,再來第三位與第四位比較,4與1比較,比較結果為
2 3 1 4 5,再來4與5的比較結果也不變
以上為第二輪比較結果,一樣沒有完成比較順序,再比較第三輪
2 3 1 4 5,重新比較第一與第二位數,2與3比較,比較不變
2 3 1 4 5,再來第二位與第三位比較,3與1比較,比較結果為
2 1 3 4 5,由於第三位開始順序已排完成,所以比較結果皆不變
接下來繼續比較第四輪
2 1 3 4 5,重新比較第一與第二位數,2與1比較,比較結果為
1 2 3 4 5,雖然已經排序完成,但迴圈還是會繼續比較,但比較結果皆不變
1原本排列的位置是在最後一位,最後跑到第一位,就像泡泡從水底往上浮起,故稱之為泡泡排序
程式需要由兩個迴圈來控制,第一個迴圈控制要比較幾輪,第二個迴圈就控制要比較第幾位數
氣泡排序法(Bubble Sort)是最容易理解和實作的一種排序演算法,也翻譯作冒泡排序法。由於它很容易學習,所以也是許多演算法課程中第一個學習的排序演算法。
由於他的演算法過程會將最大的數值移動到陣列最後面,而較小的數值則逐漸的往陣列前端移動,就像有許多氣泡慢慢從底部浮出,因此成為氣泡排序法。他的運作流程如下:
- 比較相鄰的兩個元素,若前面的元素較大就進行交換。
- 重複進行1的動作直到最後面,最後一個元素將會是最大值。
- 重複進行1,2的動作,每次比較到上一輪的最後一個元素。
- 重複進行以上動作直到沒有元素需要比較。
http://emn178.pixnet.net/blog/post/93779892-%E6%B0%A3%E6%B3%A1%E6%8E%92%E5%BA%8F%E6%B3%95%28bubble-sort%29
35947→35947→35947→35497→35479