【发布时间】:2012-09-27 17:41:04
【问题描述】:
我正在参加算法分析考试,这是其中之一:
提出一种算法,该算法将 n 个元素的列表(即 是可比的)并在 O(n log m) 时间内对它们进行排序,其中 m 是 输入列表中不同值的数量。
我已经阅读了常见的排序算法,但我真的想不出一个解决方案。
感谢您的帮助
【问题讨论】:
-
甚至可以在
O(n + m)中解决这个问题,看看计数排序。 -
也许
O(n log m)是当元素仅具有可比性(不能用作索引)时发生的情况,因此您必须构建一个平衡的 m 元素的 BST,并在叶子处使用计数器,然后执行一个计数排序,而不是一个简单的 m 计数器数组。 -
@harold 我猜你指的是Binary tree sort 使用自平衡二叉搜索树,但我仍然不知道你会如何得到 O(n log m)?
-
@HischT 我的想法更像是 jplot 解释的,只是我解释错了。哦,好吧。
标签: algorithm language-agnostic sorting