这是python中merge-sort的实现,但我在hackerrank平台的一个测试用例中得到了错误的答案。我不知道我哪里错了,我也不知道测试用例。
def merge(l,r,a):
nl=len(l)
nr=len(r)
i,j,k=0,0,0
while (i<nl and j<nr):
if (r[j]<=l[i]):
a[k]=r[j]
j=j+1
else:
a[k]=l[i]
i=i+1
k=k+1
while (i<nl):
a[k]=l[i]
i=i+1
k=k+1
while (j<nr):
a[k]=r[j]
j=j+1
k=k+1
def mergesort(a):
n=len(a)
if n<2:
return a
mid=n/2
left=a[:mid]
right=a[mid:]
mergesort(left)
mergesort(right)
merge(left,right,a)
return a
a=[5,8,3,6,4]
ans=mergesort(a)
for k in ans:
print k