0
点赞
收藏
分享

微信扫一扫

算法导论2.3归并排序

两岁时就很帅 2022-04-14 阅读 20
python算法

主要考察分治模式,分解,解决,合并
主要是下标的问题,别的挺简单的
python代码:

def Merge(A,p,q,r):
    n1 = q-p+1 #to be sorted
    n2 = r-q
    L = [0]*(n1+1)
    R = [0]*(n2+1)
    for i in range(n1):
        L[i] = A[p+i]
    L[-1] = float('inf')
    for j in range(n2):
        R[j] = A[q+j+1]
    R[-1] = float('inf')
    i = 0
    j = 0
    for k in range(p,r+1):
        if L[i]<=R[j]:
            A[k]=L[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1

def MergeSort(A,p,r):
    if p<r:
        q=(p+r)//2
        MergeSort(A,p,q)
        MergeSort(A,q+1,r)
        Merge(A,p,q,r)

B = [0,2,4,1,3,5]
Merge(B,0,2,5)
print(B)

A=[0,1,2,3,6,8,4,7,9]
# 0-p is already sorted
MergeSort(A,p=3,r=8)
print(A)
举报

相关推荐

0 条评论