在O(n + mlogm)时间对数组进行排序

时间:2016-11-02 08:57:08

标签: algorithm data-structures computer-science

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

1 个答案:

答案 0 :(得分:1)

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

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

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

总体复杂度为O(mlogm + m + n)= O(mlogm + n)