Python算法:快速排序

快速排序因爲排序效率在同爲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之類的是否是簡單多了^.^

相關文章
相關標籤/搜索