[在此处输入图片描述] [1]
[1]:https://i.stack.imgur.com/JNtR5.png 强文本
此代码无法正常工作。这段代码有什么问题?如何解决?
a=[2,5,8,7,1,9,6]
n=len(a)
temp=[0]*(n+1)
def mergesort(a,low,high):
if low < high:
mid=(low+high)/2
mergesort(a,low,mid)
mergesort(a,mid+1,high)
combine(a,low,mid,high)
print(a)
def combine(a,low,mid,high):
k=low
i=low
j=mid+1
while i<=mid and j<=high:
if a[i]<=a[j]:
temp[k]=a[i]
k=k+1
i=i+1
else:
temp[k]=a[j]
k+=1
j+=1
while i<=mid:
temp[k]=a[i]
i+=1
k+=1
while j<=high:
temp[k]=a[j]
j+=1
k+=1
print('lets sort the array')
mergesort(a,0,n)
答案 0 :(得分:0)
在全球范围内,存在两个问题:n=len(a)
导致IndexError(分别更改为n=len(a)-1
),并且您忘记了从temp复制到原始数组(将以下代码添加到combine
例程的结尾:
for t in range(low, high+1):
a[t] = temp[t]