快速排序的Python代碼實現


選擇一個數,和它后面的數比較,把比它小的放在它的左邊,大的在右邊(位置可能會因為左邊元素的添加而右移)

def quick_sort(arr):
    if arr==[]:
        return[]
    else:
        first=arr[0]
        left=quick_sort([l for l in arr[1:]if l<first])
        right=quick_sort([r for r in arr[1:]if r>=first])
        return left+[first]+right 
    
arr=[3,1,15,4,30,23,2]
result_list=quick_sort(arr)
print(result_list)

通過在參數處進行分左分右的操作,進行迭代,會出現在arr[0]兩邊不斷分裂,每一新部分有自己那部分的arr[0],不斷分左分右,最終由各部分的return整合起來

其中,不好理解的是:

arr=[3,1,15,4,30,23,2]
a=[i for i in arr[1:]if i<18]

我認為就是下面代碼的意思

arr=[3,1,15,4,30,23,2]
a=[]
for i in arr[1:]:
    if i<18:
        a+=[i]

P.S.剛才知道了這種方法叫“分治法”,附一個鏈接
五大常用算法:分治、動態規划、貪心、回溯和分支界定


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM