【发布时间】:2020-05-24 02:35:40
【问题描述】:
n 是 2 的幂。给定 logn-1 排序数组的长度分别为 1,2,4,8,...,n/2,描述确定性算法将它们合并为一个排序数组。 我想也许可以保留指向每个排序数组第一个元素的指针,将所有第一个项目插入二进制堆,然后删除 min.但是长度不同的事实让我觉得这个解决方案可能不是最好的。
解决这个问题的最有效方法是什么?
【问题讨论】:
-
这是一个有趣的问题,但如果我记得从我的日子里回答正确的话。您需要将它们一个一个地合并为大小为 1 的合并数组与大小为 2 的数组并得到一个大小为 3 的数组。将大小为 3 的数组与大小为 4 的数组合并……依此类推……这样你仍然每次只比较 2 个元素,不需要最小堆。