#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,直到全部排序完畢。
初始:
一輪:
二輪: