合并排序-python实现

import numpy as np
a=[8, 3, 2, 9, 5,7, 1, 5, 4]
b=[456,13,48,131,84613,12,11,2,2,2]
c=np.random.normal(0,200,1000)


def Merge(a,low,middle,high):
    l,m,h=low,middle+1,0
    b = [0]
    b = b * (high+1)
    while l<=middle and m<=high:
        if a[l]<=a[m]:
            b[h]=a[l]
            h+=1
            l+=1
        else:
            b[h]=a[m]
            h+=1
            m+=1
    while l<=middle:
        b[h]=a[l]
        h+=1
        l+=1
    while m<=high:
        b[h]=a[m]
        h+=1
        m+=1
    for i in range(h):
        a[low+i]=b[i]


def MergeSort(a,law,high):
    if law<high:
        mid=int((law+high)/2)
        MergeSort(a,law,mid)
        MergeSort(a,mid+1,high)
        Merge(a,law,mid,high)

MergeSort(c,0,len(c)-1)

print(c)

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/79924516