python 數據結構之歸並排序
阿新 • • 發佈:2018-10-07
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 數據結構之歸並排序