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中是列表,我在编写代码时犯了两个致命错误,将原来的列表输出,忘记将排序后的列表重组。