【发布时间】:2026-02-15 03:00:01
【问题描述】:
我需要使用 c++ 任何 stl-containers 找到序列的 k 最大元素的最快算法。 我的想法:使用列表或向量,对它们进行排序,获取第一个 k 元素。在这种情况下,操作数等于 n*log(n)。 n - 元素的数量。 但我认为这不是最好的。
【问题讨论】:
-
你可以在 O(N) 时间内得到一个列表的第 i 个值,但我不知道算法是否扩展到第 i 个值。
-
k 可以有多大?如果 k 很小,使用堆可能会更快。此外,这可能是一个骗局,所以您可能会发现它已经在网站的其他地方得到了回答。