排序之归并

def Partition(lis:list):

    length = len(lis)
    if length == 1:
        return lis
    left = Partition(lis[:length//2])
    right = Partition(lis[length//2:])

    return merge(left, right)


def merge(left:list, right:list):
    tmp = []
    l_length , r_length= len(left), len(right)
    leftpoint = rightpoint = 0
    # 当左边序列没完的时候
    while leftpoint <= l_length - 1:
        if left[leftpoint] < right[rightpoint]:
            tmp.append(left[leftpoint])
            leftpoint += 1
            continue
        else:
            tmp.append(right[rightpoint])
            rightpoint += 1
            # 当右边序列排序完
            if rightpoint == r_length:
                tmp.extend(left[leftpoint:])
                break
    # 当正常结束的时候 说明 左边序列添加完
    tmp.extend(right[rightpoint:])
    return tmp

归并:先分在并 

  重点在于 分了之后 如何汇合分治的元素---然后小猫钓鱼

原文地址:https://www.cnblogs.com/zengmu/p/12824922.html