【问题标题】:Compute the number of Inversions计算反转次数
【发布时间】:2016-10-22 15:22:37
【问题描述】:

A[1...n] 是一个由n 个不同数字组成的数组。

(i, j) 对被称为 inverse,如果 i < j and A [i] > A [j].

示例:

A := (2, 3, 8, 6, 1) => A 有 5 个逆数。

任务:

编写程序找出数组 A [1..n] 的逆数,使得算法的复杂度为 O (n * logn)。

【问题讨论】:

  • 欢迎来到 Stack Overflow!家庭作业问题应该显示你所拥有的努力和当前的代码。逐字抛出家庭作业问题不太可能得到良好的回应;解释您遇到的问题并提供清晰的调试信息。

标签: algorithm code-complexity


【解决方案1】:

这个问题可以基于归并排序来解决。

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

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

【讨论】:

  • 您能否发布您的代码,我可以指导您完成解决方案的路径
猜你喜欢
  • 1970-01-01
  • 2021-03-11
  • 2013-07-12
  • 1970-01-01
  • 2021-04-14
  • 2015-07-08
  • 2014-08-04
  • 1970-01-01
  • 2013-09-16
相关资源
最近更新 更多