氣泡排序法、冒泡排序法(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) 印出結果如下:
可以發現回合4、回合5、回合6所印出之結果都一樣,
也就表示從回合4之後,
雖然for迴圈仍執行,但都沒有進入交換的條件中(即都不符合if的陳述條件)
因此,改寫此氣泡排序,
加入 flag 邏輯變數(第3行、第10行),紀錄是否有進入if條件中進行交換,
若沒有,表示排序已經完成,可以結束,python程式碼如下:
呼叫 bubble_sort_flag(mylist) 印出結果如下:
加入flag之後,只需進行4回合即可完成排序。
可以參考wiki,https://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
留言列表