[英]Finding the kth largest element using a min-heap
我有一个关于使用min-heap查找第k个最大元素的问题。 算法如下:
我们采用前k个元素并构建一个minheap
设Sk是S中最小的元素。
从剩余的nk元素中查看一个新元素。
如果新元素大于Sk,则它在S中替换它,并重新排序堆。
那么S将有一个新的最小元素。
在查看了所有其他元素之后,Sk就是答案
我不明白这个算法。 例如,让数字为1,2,3,4。我们想要找到第4个最大值,即4个。但是当我们使用算法时,我们采用前4个元素,构建minheap,Sk为1。
我究竟做错了什么? 如果有人可以帮忙,我将不胜感激。 谢谢
我认为你的术语混淆了。 序列1,2,3,4中最大的元素是数字4.第二大元素是3,第三大元素是2,第四大元素是1.由于算法返回1,它可以正常工作。
但是,4是序列中第k个最小的元素。 如果要查找第k个最小元素,可以将最小堆与最大堆交换,并对算法进行适当的调整。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.