NO.3 嘗試探究python的經典算法-快速排序(二)快速排序

經過上一章對分而治之思想和遞歸的思考,這裏我正式開始來研究快速排序
快速排序有非常明顯的分而治之的思想在其中,首先我們來對一個列表進行排序,對排序算法來說,最簡單的列表是怎麼樣的呢?那就是根本不需要排序的數組
如果一個列表是空的或者是隻有一個數,根本不用排序

def quicksort(array):
    if len(array)<2:
        return array

只有兩個元素的也很簡單,直接進行比較就行了
那麼有三個元素呢,當然我們依然可以使用循環進行比較

def sort(array):
    for i in range(len(array)):
        for j in range(len(array) - 1):
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]
    return array

當然,這樣計算的速度是非常慢的,在計算長數據的時候由於要遍歷每一個數而導致效率地下,所以現在我們使用快速排序來解決這個問題

def quicksort(array):
    if len(array)<2:
        return array
    else:
        pivot=array[0]
        less=[i for i in array[1:] if i<=pivot]
        greater=[i for i in array[1:] if i>pivot]
        print(array)
        print(less)
        print(greater)
        return quicksort(less)+[pivot]+quicksort(greater)

我先把代碼貼出來

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