1. 程式人生 > >python 數據結構之歸並排序

python 數據結構之歸並排序

clas 歸並排序 result pen 列表 else res back round

def merger_sort(alist):
    if len(alist) <= 1 :
        return alist
    num=int(len(alist)/2)
    left=merger_sort(alist[:num])  
    right=merger_sort(alist[num:])   #分前後兩個順序
    return merger(left,right)

def merger(left,right):
    l,r=0,0
    result = []  # 存放結果
    while l < len(left) and r < len(right):
        
if left[l]<right[r]: result.append(left[l]) l+=1 else : result.append(right[r]) r+=1 result+=left[l:] result+=right[r:] return result alist=[0,1,45,86,9,3,10,4,2] b=merger_sort(alist) print(b)

歸並排序就是簡單的將數組進行一分組,我們可以理解為簡單的分治算法,然後分別取兩個中的數組進行排序和重組,當然在python中是列表,我在編寫代碼時犯了兩個致命錯誤,將原來的列表輸出,忘記將排序後的列表重組。

python 數據結構之歸並排序