计算反转次数

时间:2016-10-22 15:22:38

标签: algorithm code-complexity

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)。

1 个答案:

答案 0 :(得分:0)

此问题可以基于合并排序来解决。

严格来说,您应该修改程序merge(A, B),它会返回(a, b) such that a in A, b in B and b > c对的数量。

正如您所看到的,解决此问题所需的运行时间是合并排序的运行时间,因此O(n * log(n))