合并排序中的交换次数(Python)

时间:2014-05-11 13:03:19

标签: python count swap mergesort

我应该如何找到合并排序中完成的交换次数,这是算法。完成计数计算,问题是:不返回计数变量。

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 :(得分:0)

你是Python的新手吗?你刚刚错过了缩进 请更正它。 More About Indentaiont

您的代码应该是这样的。

def mergesort(elist, count):  
    #st1 
    #st2
    while..
        #st3
        #st4
    return count

请注意缩进。

答案 1 :(得分:0)

您无法return执行某项功能,请尝试将return替换为print

...
print enlist,count