归并排序中的交换次数(Python)
我应该怎么计算在归并排序中进行的交换次数呢?这里有一个算法。虽然计算次数的部分已经完成,但问题是:这个计数的变量没有被返回。
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))
如果交换次数的计算有错误,也请修正一下。谢谢!
2 个回答
0
你不能在函数外面使用 return
,试着把 return
换成 print
。
...
print enlist,count
0
你是刚接触Python
吗?你刚刚漏掉了缩进。
请把它改正过来。
了解更多关于缩进的内容。
你的代码应该像这样。
def mergesort(elist, count):
#st1
#st2
while..
#st3
#st4
return count
注意缩进哦。