close

氣泡排序法、冒泡排序法(Bubble sort)為把相鄰的數字兩兩相比較、交換,

最終得到排序結果的方法。

若有n個數字,則需進行n-1個回合數。

 

以下為Python的氣泡排序法(由小到大排序)程式碼

第5~7行可以替換成 list[j], list[j + 1] = list[j + 1], list[j]

在Python兩數值交換可以不使用另外一個變數(像是常用的temp),

而是以 x,y = y,x 表示即可。

 

以 mylist = [20, 9, 100, 0, 55, 3 ,11] 為例,

呼叫 bubble_sort(mylist) 印出結果如下:

bubble001.PNG

可以發現回合4、回合5、回合6所印出之結果都一樣,

也就表示從回合4之後,

雖然for迴圈仍執行,但都沒有進入交換的條件中(即都不符合if的陳述條件)

 

因此,改寫此氣泡排序,

加入 flag 邏輯變數(第3行、第10行),紀錄是否有進入if條件中進行交換,

若沒有,表示排序已經完成,可以結束,python程式碼如下:

呼叫 bubble_sort_flag(mylist) 印出結果如下:

bubble002.PNG

加入flag之後,只需進行4回合即可完成排序。

 


可以參考wikihttps://zh.wikipedia.org/wiki/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F
Python Program to Swap Variables Without Temporary Variable,http://www.programiz.com/python-programming/examples/swap-variables

arrow
arrow
    文章標籤
    sort python 資料結構
    全站熱搜

    Jialin 發表在 痞客邦 留言(1) 人氣()