冒泡排序 BubbleSort
介紹:
冒泡排序的原理非常簡單,它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。
步驟:
- 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
- 對第0個到第n-1個數據做同樣的工作。這時,最大的數就“浮”到了數組最後的位置上。
- 針對所有的元素重複以上的步驟,除了最後一個。
- 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
源代碼:(python實現)
def bubble_sort(arry): n = len(arry) #獲得數組的長度 for i in range(n): for j in range(1,n-i): if arry[j-1] > arry[j] : #如果前者比後者大 arry[j-1],arry[j] = arry[j],arry[j-1] #則交換兩者 return arry |
不過針對上述代碼還有兩種優化方案。
優化1:某一趟遍歷如果沒有數據交換,則說明已經排好序了,因此不用再進行迭代了。用一個標記記錄這個狀態即可。
優化2:記錄某次遍歷時最後發生數據交換的位置,這個位置之後的數據顯然已經有序,不用再排序了。因此通過記錄最後發生數據交換的位置就可以確定下次循環的範圍了。
轉至:http://wuchong.me/blog/2014/02/09/algorithm-sort-summary/