【发布时间】:2012-06-24 17:21:08
【问题描述】:
我有一个数组A 中表示的最大堆,我有以下问题:
Is it possible to build a sorted list , based on the maximum
heap - A - in O(n*log(log(n))) ?
我的回答:不,我们不能!我们总是可以在A 上运行并在O(n*log(n)) 中执行 MergeSort
或O(n*log(n)) 中的快速排序(最坏情况O(n^2))。
我还想也许可以基于 A 构建实际的堆,这需要 O(n) ,然后从那里提取 O(n*log(n)) 中的所有元素,但我在这里一无所获。
目前我看不到 O(n*log(log(n))) 的任何选项,有什么想法吗?
【问题讨论】:
-
O(n) 中的合并排序?这通常是不可能的。
-
如果不为你做功课,我很难回答这个问题。 (太糟糕了,因为这是一个有趣的练习:)
-
@larsmans:创意答案+1 :)