Python 分治排序算法的难点

Python 分治排序算法的难点,python,mergesort,Python,Mergesort,合并排序实现难以提供正确的输出: def merge_sort(a): # array of 1 item or less returns the same array if len(a) <= 1: return a # index for middle of array m = math.floor(len(a) / 2) # Recursive method for dividing and sorting original a

合并排序实现难以提供正确的输出:

def merge_sort(a):
    # array of 1 item or less returns the same array
    if len(a) <= 1:
        return a
    # index for middle of array
    m = math.floor(len(a) / 2)
    # Recursive method for dividing and sorting original array into smaller 
    # arrays
    a0 = merge_sort(a[0:m])
    a1 = merge_sort(a[m:])
    merge(a0, a1, a)
    return a

def merge(a0, a1, a):
    # Indices for arrays a1 and a0
    i0 = 0
    i1 = 0
    for i in range(len(a)):
        # Array no longer contains elements not already sorted into Array a
        if i0 == len(a0):
            a[i] = a1[i1]
            i1 += 1
        # Array no longer contains elements not already sorted into Array a
        elif i1 == len(a1):
            a[i] = a0[i0]
            i0 += 1
        # Comparing Arrays a1 and a0, then adding smaller element to 
        # original Array a
        elif a[i0] < a[i1]:
            a[i] = a0[i0]
            i0 += 1
        else:
            a[i] = a1[i1]
            i1 += 1
def merge_sort(a):
#小于等于1项的数组返回相同的数组
如果len(a)
def merge(a0,a1,a):
i0=0
i1=0
对于范围内的i(len(a)):
如果i0==len(a0):
a[i]=a1[i1]
i1+=1
elif i1==len(a1):
a[i]=a0[i0]
i0+=1
elif a0[i0]

错误发生在
merge()
,您应该比较a0和a1,而不是a。

第三个elif子句必须是

elif a0[i0] < a1[i1]:
elif a0[i0]
您的代码打算如何工作?你能在代码中添加注释吗?