反转计数合并排序算法的问题-Python

反转计数合并排序算法的问题-Python,python,algorithm,mergesort,inversion,Python,Algorithm,Mergesort,Inversion,我试图使用MergeSort计算文件的反转,我的代码似乎适用于较小的文件,但较大的文件会产生错误的输出。我的代码: InversionCount.py: count = 0 def merge_sort_inversions(numberlist): if len(numberlist) < 2: return numberlist else: mid = len(numberlist) // 2 lefthalf = nu

我试图使用MergeSort计算文件的反转,我的代码似乎适用于较小的文件,但较大的文件会产生错误的输出。我的代码:

InversionCount.py:

count = 0

def merge_sort_inversions(numberlist):
    if len(numberlist) < 2:
        return numberlist
    else:
        mid = len(numberlist) // 2
        lefthalf = numberlist[:mid]
        righthalf = numberlist[mid:]

    return sort_count_inversions(merge_sort_inversions(lefthalf), merge_sort_inversions(righthalf))

def sort_count_inversions(l, r):
    result = []

    i=0
    j=0

    global count

    while(i < len(l) and j<len(r)):
        if (r[j] > l[i]):
            result.append(l[i])
            i+= 1
        elif(r[j] < l[i]):
            result.append(r[j])
            count += (len(l) - i)
            j+=1
    if(j>=len(r)):
        result+=l
    elif(i>=len(l)):
        result+=r

    print(count)
    return result
答案是:2407905288,但我得到的最终打印数是:2294538587258。我非常感谢在这方面的任何帮助,因为我正在努力自学算法。此外,我的问题发生在大文件中,因此如何调试一个似乎只发生在非常大的输入中的问题(我尝试用较小的输入测试这个问题,它给出了正确的答案)?谢谢大家!

import InversionCount

text_file = open('algorithms-1-test2.txt', 'r')
number_list = text_file.readlines()
number_list = list(map(int, number_list))

InversionCount.merge_sort_inversions(number_list)