用Python實現排序算法——快速排序

     快排(QuickSort)是很實用的算法,好用就好用在一個“快”字,而且它採用的是分治的策略,分治顧名思義就是“分而治之”,把一個大問題分成很多小問題逐個去解決,這個思想在處理大數據時相當有效,更詳細通俗的原理解析請看這裏

直接貼代碼:

def partition(sort_list, left, right):
    key = sort_list[left]
    while left < right :
        while left < right and sort_list[right] >= key :
            right -= 1
        if left < right and sort_list[right] < key:
            sort_list[left] = sort_list[right]
            left += 1
        while left < right and sort_list[left] >= key:
            left += 1
        if left < right and sort_list[left] < key:
            sort_list[right] = sort_list[left]
            right -= 1
    sort_list[left] = key
    return left
def quickSort(sort_list, left, right):
    if left < right :
        i = partition(sort_list, left, right)
        quickSort(sort_list, left, right-1)
        quickSort(sort_list, left+1, right)
    return sort_list

      這段代碼可以整合成一個函數,大家可以自行優化。代碼以第一個元素爲初始基準,採用遞歸的方法實現。值得一提的是,雖然遞歸是效率相對較低的方法,但是可以讓代碼結構清晰易懂,而且分治策略的算法大部分都用遞歸實現。

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