码迷,mamicode.com
首页 > 编程语言 > 详细

python 数据结构之归并排序

时间:2018-10-07 12:12:48      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:col   ali   app   back   pen   分治算法   pad   原来   结果   

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 数据结构之归并排序

标签:col   ali   app   back   pen   分治算法   pad   原来   结果   

原文地址:https://www.cnblogs.com/kk328/p/9749703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!