我正在做一些算法事情。有两个数组,长度为n的数组A按升序排序,而长度为m的数组B则没有。这个问题要求我们生成一个数组,其中m + n个整数按升序排序。它应该以o(n + mlogm)时间终止。我认为首先在B上执行合并排序,它可能需要o(mlogm)时间。然后在A和B上执行合并排序,但显然需要更多时间。还有其他解决方案吗?
答案 0 :(得分:1)
你是对的,第一步是在O(mlogm)中对第二个数组进行排序。
但第二步是简单合并排序数组,取O(n + m)
(合并等于mergesort的合并阶段。Arbitrary example)
总体复杂度为O(mlogm + m + n)= O(mlogm + n)