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

合并排序中的交换数(Python),python,count,swap,mergesort,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=mergeso

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

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))
count=0
def合并排序(列表、计数):
#打印(计数)
低=0
高=透镜(elist)
#打印(len(elist))

如果len(elist)您是Python的新手吗?您刚刚错过了缩进。
请改正它。 .

您的代码应该是这样的

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

请注意缩进。

如果无法在函数外部执行
返回
,请尝试将
返回
替换为
打印

...
print enlist,count

“无法返回”是什么意思?请正确缩进代码,并更准确地解释问题。请重新格式化代码,使其正常运行。复制粘贴它会为我返回29的语法错误。