具有m个不同值的n个元素的特定算法

时间:2012-09-27 17:41:05

标签: algorithm language-agnostic sorting

我正在进行算法分析考试的练习,这是其中之一:

  

提出一种算法,该算法将n个元素列表作为输入   是可比较的)并在O(n log m)时间内对它们进行排序,其中m是   输入列表中的不同值的数量。

我已经阅读了常见的排序算法,我真的无法提出解决方案。

感谢您的帮助

1 个答案:

答案 0 :(得分:8)

您可以在n元素上构建扩充的平衡二叉搜索树。存储在每个节点的增强信息将是它的频率。您使用n插入到树中构建此结构,执行此操作的时间为O(n lg m),因为只有m个节点。然后你对这棵树进行有序遍历:访问左子树,然后打印存储在根f次的元素,其中f是它的频率(这是增强信息),最后访问正确的子树。此遍历需要时间O(n + m)。因此,从O(n lg m + n + m) = O(n lg m)开始,这个简单程序的运行时间为m <= n