<p>我尝试使用合并排序算法来计算数组中的倒数,该数组包含1到100000范围内的所有数字。当我输入一个小的数据集时,它工作得很好,但是当我输入包含较大数组的文件时,它不会返回正确的答案。也许我输入文件的方式有问题吗?我以前从未向数组中输入过文件,所以我无法确定是否正确地执行了该操作。在</p>
<pre><code>file = open('IntegerArray.txt','r')
integerArray = []
for line in file:
integerArray.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(line)
inversions = 0
def divide(list):
if len(list) > 1:
middle = int(len(list) / 2)
left = divide(list[:middle])
right = divide(list[middle:])
#left = divide(left)
#right = divide(right)
elif len(list) <= 1:
return list
return merge(left,right)
def merge(left,right):
global inversions
result = []
while left != [] and right != []:
if left[0] < right[0]:
result.append(left[0])
if len(left) > 1:
left = left[1:]
else:
left = []
elif left[0] > right[0]:
result.append(right[0])
inversions += len(left)
if len(right) > 1:
right = right[1:]
else:
right = []
if left != []:
result += left
if right != []:
result += right
return result
divide(integerArray)
print(inversions)
</code></pre>
<p>这应该返回2407905288,但返回2397819672。在</p>