我应该如何找到合并排序中完成的交换次数,这是算法。完成计数计算,问题是:不返回计数变量。
count=0
def mergesort(elist,count):
#print(count)
low=0
high=len(elist)
#print(len(elist))
if len(elist)<2:
return elist
mid=int((low+high)/2)
enlist=[]
y=mergesort(elist[:mid],count)
z=mergesort(elist[mid:high],count)
i=0
j=0
while(i<len(y) and j<len(z)):
if y[i]<=z[j]:
enlist.append(y[i])
i+=1
else:
count+=abs((len(y)+1)-i)
enlist.append(z[j])
j+=1
enlist+=y[i:];
enlist+=z[j:]
return enlist,count
i=0
list=[2,1,3,4,5,6,7]
print(mergesort(list,0))
如果交换计数出错,请更正。 感谢
答案 0 :(得分:0)
你是Python
的新手吗?你刚刚错过了缩进
请更正它。
More About Indentaiont。
您的代码应该是这样的。
def mergesort(elist, count):
#st1
#st2
while..
#st3
#st4
return count
请注意缩进。
答案 1 :(得分:0)
您无法return
执行某项功能,请尝试将return
替换为print
...
print enlist,count