我的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))
有没有其他更好的方法来编写这个程序的驱动程序代码
这段代码包含很多错误。例如,
合并排序(a、p、q)
合并排序(a,q+1,r)
这两行的返回值从不使用
在这里,用0填充这两个列表,然后在列表末尾追加新值,而这些0只会确保返回的值是0
相关问题 更多 >
编程相关推荐