Algorithm 在哪些情况下,使用合并排序计算反转的以下算法将失败

Algorithm 在哪些情况下,使用合并排序计算反转的以下算法将失败,algorithm,Algorithm,我已经编写了以下代码来计算一组数字中的倒数。它为我测试它的输入提供了正确的结果,但它仍然失败了测试用例,我没有访问测试用例的权限,我无法确定它将失败的情况,我真的可以在这里使用一些帮助 def count_反转(数组): """ 使用分治法计算阵列中的反转数 反转是一对(x,y),使得x>y,例如在数组中 [3,1,2]有两个反演(3,1),(3,2) """ 长度=len(数组) 如果长度==1或长度==0: 返回数组,0 elif长度==2: 如果数组[0]>数组[1]: array.sor

我已经编写了以下代码来计算一组数字中的倒数。它为我测试它的输入提供了正确的结果,但它仍然失败了测试用例,我没有访问测试用例的权限,我无法确定它将失败的情况,我真的可以在这里使用一些帮助

def count_反转(数组):
"""
使用分治法计算阵列中的反转数
反转是一对(x,y),使得x>y,例如在数组中
[3,1,2]有两个反演(3,1),(3,2)
"""
长度=len(数组)
如果长度==1或长度==0:
返回数组,0
elif长度==2:
如果数组[0]>数组[1]:
array.sort()
返回数组,1
其他:
返回数组,0
其他:
左\u数组,左\u计数=计数\u反转(数组[:长度/2])
右\u数组,右\u计数=计数\u反转(数组[长度/2:])
交叉阵列,交叉计数=计数分割(左交叉阵列,右交叉阵列)
返回交叉点,左交叉点+右交叉点+交叉点
def计数_分割(左、右):
"""
计算分割对中的反转数
左和右,借助于合并例程
合并类
"""
l=0
r=0
合并=[]
计数=0
反演=0
最后r=0
尝试:
尽管如此:
如果左[l]>右[r]:
merge.append(右[r])
如果r==0或r==last\u r:
反演=0
反演+=1
r=r+1
其他:
merge.append(左[l])
计数=计数+反转
l=l+1
最后的r=r
除索引器外:
如果r==len(右):
而l
试试看

你的答案是-5。
真正的答案是-7


这闻起来像是家庭作业/在线判断,所以我要说你的错误在异常块中的某个地方。

它不在异常块中,错误实际上是在我计算反转数的方式中,但你的例子帮助我得到了错误。非常感谢:)明显错误N1:在异常块中,首先用count+=r替换count+=inversion。
3 4 6 1 2 5