快速排序因爲排序效率在同爲O(N*logN)的幾種排序方法中效率較高,所以常常被採用。python
該方法的基本思想是:數組
1.先從數列中取出一個數做爲基準數。app
2.分區過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。less
3.再對左右區間重複第二步,直到各區間只有一個數。ui
如今經過一個實例來講明快排。spa
好比有一個數組:code
6 2 4 5 3
第一步:選取一個基準數,不要被這個名詞嚇到了,你能夠把它看做是一個比較大小的數,由於排序就是比較大小,排序
好比我選取最後一個數3爲基準數,依次把數組的數和3比較,比3小的放左邊,比3大的放右邊,這樣有以下結果:class
2 3 6 4 5
第二步:判斷區間個數,通過第一步後左邊區間只有一個數了,沒有數字再和它比較了,所以不須要重複操做,右邊區間還有:效率
6 4 5
重複第一步,選取5做爲基準數,獲得比較結果:
4 5 6
這樣左右兩邊區間都只有一個數了,這就標誌着排序完成,最後把全部區間合併就獲得排序結果:
2 3 4 5 6
Python代碼
def quick_sort(array): less = []; greater = [] if len(array) <= 1: return array pivot = array.pop() for x in array: if x <= pivot: less.append(x) else: greater.append(x) return quick_sort(less) + [pivot] + quick_sort(greater)
list = [2,4,2,6,7,8,1] print quick_sort(list) [1, 2, 2, 4, 6, 7, 8]
相比C、C#、JAVA之類的是否是簡單多了^.^