查找O(n)时间中的n个最大条目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找O(n)时间中的n个最大条目相关的知识,希望对你有一定的参考价值。
是否有一种方法可以在O(n)时间中找到具有n个元素的数组中的对数n个最大元素?
我将创建一个基于数组的HeapPriorityQueue,因为如果所有元素都可用,则可以使用自下而上的堆构造在O(n)时间内创建堆。然后,删除此优先级队列的第一个元素应该在O(1)中,时间是否是't?
答案
然后删除此优先级队列的第一个元素应该在O(1)时间为`t?]中>
这将是
O(logn)
,因为您还将删除第一个元素。看着它而不删除是O(1)。重复此清除logn
次将是O(log^2(n))
,它仍然在O(n)
中,因此此解决方案确实可以满足要求。
另一种选择是使用selection algorithm直接查找第log(n)
个最大元素,也将是O(n)
。
另一答案
基本上,是的。堆的创建占用O(n),这支配了算法。
以上是关于查找O(n)时间中的n个最大条目的主要内容,如果未能解决你的问题,请参考以下文章