Python-快速排序

#coding:utf-8
def quicksort(list):
    if len(list)<2:
        return list
    else:
        midpivot = list[0] #基準值
        lessbeforemidpivot = [i for i in list[1:] if i<=midpivot]
        biggerafterpivot = [i for i in list[1:] if i > midpivot]
        finallylist = quicksort(lessbeforemidpivot)+[midpivot]+quicksort(biggerafterpivot)
        return finallylist

print quicksort([5, 2, 8, 6, 4, 9, 7, 3, 1])

快速排序的原理:

快速排序(Quick Sort)使用分治法策略
它的基本思想是:選擇一個基準數,通過一趟排序將要排序的數據分割成獨立的兩部分;其中一部分的所有數據都比另外一部分的所有數據都要小。然後,再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。

快速排序流程
(1) 從數列中挑出一個基準值。
(2) 將所有比基準值小的擺放在基準前面,所有比基準值大的擺在基準的後面(相同的數可以到任一邊);在這個分區退出之後,該基準就處於數列的中間位置。
(3) 遞歸地把"基準值前面的子數列"和"基準值後面的子數列"進行排序。


舉例:

將以下數據升序排列:5, 2, 8, 6, 4, 9, 7, 3, 1

 

1.先確定一個基準數,然後按照比較規則,如本例是升序排列,則將比基數大的放到右邊,比基數小的放到左邊。

2.接下來各邊重複步驟1,直到全部排序完畢。

初始:

一輪:

二輪:         

 

三輪:                                    

...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章