【问题标题】:sort on arrays in O(n+mlogm) time在 O(n+mlogm) 时间内对数组进行排序
【发布时间】:2016-11-02 08:57:08
【问题描述】:

我在做一些算法的事情。有两个数组,长度为 n 的数组 A 已按升序排序,而长度为 m 的数组 B 未按升序排序。这个问题要求我们生成一个数组,其中 m+n 个整数按升序排序。它应该在 o(n+mlogm) 时间内终止。我认为首先对 B 执行合并排序,这可能需要 o(mlogm) 时间。然后对 A 和 B 执行归并排序,但显然需要更多时间。还有其他解决办法吗?

【问题讨论】:

标签: algorithm data-structures computer-science


【解决方案1】:

你说得对,第一步是在 O(mlogm) 中对第二个数组进行排序。

但是第二步是简单的合并排序数组,需要 O(n + m)

(合并等于mergesort的Merge阶段。Arbitrary example

所以总体复杂度是 O(mlogm + m + n) = O(mlogm + n)

【讨论】:

  • 似乎是对的,复杂度将是 O(n + m + mlogm) -> O(n + mlogm)
猜你喜欢
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-12
  • 2013-11-01
相关资源
最近更新 更多