归并排序python

来源:互联网 发布:mysql 命令行导入 编辑:程序博客网 时间:2024/05/22 05:03

归并排序主要是分治和递归的思想:
首先用二分法将整个数组分割成很多小块
然后合并每个小块,将较小的元素拍到前面

def merge(a, b):    c = []    i = j = 0    while i < len(a) and j < len(b): #从中线两边归并,比较大小那个小就把那个元素放在tr[k]中        if a[i] < b[j]:            c.append(a[i])            i = i+1        else:            c.append(b[j])            j = j+1    if i < len(a):        for k in a[i:]:            c.append(k)    if j < len(b):        for k in b[j:]:            c.append(k)    return cdef m_sort(a): #S为首坐标,T为尾坐标    if len(a) <= 1:        return a    else:        middle = len(a)/2        left = m_sort(a[:middle])        right = m_sort(a[middle:]) # 分治    return merge(left, right) #递归a = [50,10,90,30,70,40,80,60,20]print m_sort(a)
原创粉丝点击