归并排序(Python)

1.算法步骤

首先考虑一个问题:两个有序列表如何合并成一个列表
A=[1,3,5,6,7,12] B=[6.7.9.11]
1.构建一个result=[]
2.当A非空且B非空:
比较A[0]和B[0]
result添加较小的那个元素,并从原始数组弹出
3.如果A非空,把A添加到result末尾
4.如果B非空,把B添加到result末尾

1.先把数组分成两部分
2.每部分递归处理变成有序
3.将两个有序列表合并起来

2.算法模版
n=int(input())
a=list(map(int,input().split()))
def Merge(A,B):
    result=[]
    while len(A) !=0 and len(B) !=0:
        if A[0]<= B[0]:
            result.append(A.pop(0))
        else:
            result.append(B.pop(0))
    result.extend(A)
    result.extend(B)
    return result
def MergeSort(A):
    if len(A)<2:
        return A
    mid=len(A)
    left=MergeSort(A[:mid])
    right=MergeSort(A[mid:])
    return Merge(left,right)
print(' '.join(map(str,MergeSort(a))))

你可能感兴趣的:(python,开发语言,算法,排序算法)