Python 执行合并排序时出现逻辑错误

Python 执行合并排序时出现逻辑错误,python,Python,我的mergesort代码将0作为已排序数组的成员 这种输出的原因是什么 PS C:\Users\admin\Desktop\python> python m.py 4 0 6 1 5 2 3 the soerted array is [0, 0, 0, 0, 0, 0, 0] PS C:\Users\admin\Desktop\python> 代码如下 g = [] n = q-p+1 m = r-q b = [0]*(n) c = [0

我的mergesort代码将0作为已排序数组的成员 这种输出的原因是什么

PS C:\Users\admin\Desktop\python> python m.py
4 0 6 1 5 2 3
the  soerted array is [0, 0, 0, 0, 0, 0, 0]
PS C:\Users\admin\Desktop\python>
代码如下

    g = []
    n = q-p+1
    m = r-q
    b = [0]*(n)
    c = [0]*(m)
    for i in range(0, n):
        b.append(a[i+p])
    for j in range(0, m):
        c.append(a[q+1+j])
    b.append(math.inf)
    c.append(math.inf)
    i = 0
    j = 0

    for k in range(p, r+1):
        if b[i] < c[j]:
            g.append(b[i])
            i += 1
        else:
            g.append(c[j])
            j += 1

    return g


def mergesort(a, p, r):
    if p < r:
        q = (p+r)//2
        mergesort(a, p, q)
        mergesort(a, q+1, r)
        return merge(a, p, q, r)


a = [4, 0, 6, 1, 5, 2, 3]
n = len(a)
print(*a, sep=" ")
print("the  sorted array is", mergesort(a, 0, n-1))
g=[]
n=q-p+1
m=r-q
b=[0]*(n)
c=[0]*(m)
对于范围(0,n)内的i:
b、 附加(a[i+p])
对于范围(0,m)内的j:
c、 追加(a[q+1+j])
b、 追加(math.inf)
c、 追加(math.inf)
i=0
j=0
对于范围内的k(p,r+1):
如果b[i]

是否有其他更好的方法来编写此程序的驱动程序代码

此代码包含大量错误。例如,
合并排序(a、p、q)
合并排序(a,q+1,r)
这两行的返回值从不使用

b = [0]*(n)
c = [0]*(m)

在这里,您用0填充两个列表,然后在列表的末尾附加新值,而这些0只会确保您返回的值是0。

这是因为,您的实现不正确。您应该以更具
pythonic
风格的方式实现mergesort。我知道它们是实现mergesort的更好方法,但是,我只是想知道为什么这个代码不起作用?