使用合并排序python的反转计数

使用合并排序python的反转计数,python,sorting,merge,count,inversion,Python,Sorting,Merge,Count,Inversion,我正在实现一个带有反转计数的合并排序。 我的代码可以很好地处理我的小输入文件(10个元素),但当它达到100000时, 它似乎返回了不正确的答案,从野蛮的搜索。有时大,有时小。有人知道吗 我的代码返回2402298631。 输入文件位置 def msort_inv2(m): 全局计数 如果len(m)0)或(len(右)>0): 如果(len(左)>0)和(len(右)>0): 如果左[0]>右[0]: result.append(右[0]) 计数=计数+长度(左) 对。流行音乐(0) 其他:

我正在实现一个带有反转计数的合并排序。 我的代码可以很好地处理我的小输入文件(10个元素),但当它达到100000时, 它似乎返回了不正确的答案,从野蛮的搜索。有时大,有时小。有人知道吗

我的代码返回2402298631。 输入文件位置

def msort_inv2(m):
全局计数
如果len(m)0)或(len(右)>0):
如果(len(左)>0)和(len(右)>0):
如果左[0]>右[0]:
result.append(右[0])
计数=计数+长度(左)
对。流行音乐(0)
其他:
result.append(左[0])
左。弹出(0)
elif len(右)>0:
对于右边的我:
结果.追加(i)
对。流行音乐(0)
其他:
对于左边的i:
结果.追加(i)
左。弹出(0)
返回结果

缺陷存在于以下部分

    elif len(right) > 0:
        for i in right:     # bug !!!!
            result.append(i)
            right.pop(0)
    else:
        for i in left:
            result.append(i)
            left.pop(0)
修正是这样的

    elif len(right) > 0:
        result.extend(right)
        right = []
    else:
        result.extend(left)
        left = []

for数组中的循环和同时弹出的项目将导致python中出现奇怪的行为。

请提供代码的详细说明和比“似乎不正确”(提供输入、预期和实际输出)更好的问题描述。如果您发布了一些代码,可能会有所帮助您的代码是“返回”还是“输出”2402298631?
    elif len(right) > 0:
        result.extend(right)
        right = []
    else:
        result.extend(left)
        left = []