我想知道使用TreeMap
来查看数字数组并获得排序结果比使用Median of Medians算法找到未排序数组中的第K个最大元素更好吗?它们都不会在线性时间内工作吗?
答案 0 :(得分:1)
两者都不能在线性时间内工作吗?
当然他们会:一旦数据在树形图中,找到K顺序统计数据就是O(N)操作 * 。此外,除非您选择将已排序的容器写入数组,否则运行在TreeMap
上的常量因子将会更小。
问题是构建TreeMap
是O(N * log 2 N),而Median of Medians算法适用于未分类数据,因此不需要预备步骤。因此,在先前无序的集合上使用TreeMap
将渐渐变得更加昂贵。
* 您可以通过使用每个子树中的项目数增加树节点来使其成为O(log 2 N)。