让A[1...n]
成为由n个不同数字组成的数组。
对(i, j)
称为逆,如果i < j and A [i] > A [j]
。
示例:
A:=(2,3,8,6,1)=&gt; A有5个反转。
任务:
编写程序以查找数组A [1..n]的反转次数,使算法的复杂度为O(n * logn)。
答案 0 :(得分:0)
此问题可以基于合并排序来解决。
严格来说,您应该修改程序merge(A, B)
,它会返回(a, b) such that a in A, b in B and b > c
对的数量。
正如您所看到的,解决此问题所需的运行时间是合并排序的运行时间,因此O(n * log(n))