【发布时间】:2023-03-11 16:40:02
【问题描述】:
我想找到数组中第 k 个最小的元素,但实际上我的分区方法需要它的索引。
我在此博客上找到了用于查找第 k 个最小元素的代码: http://blog.teamleadnet.com/2012/07/quick-select-algorithm-find-kth-element.html
但这只会返回值,而不是索引。
您知道如何有效地找到它的索引吗?
【问题讨论】:
-
如何在大小为 k 的堆中维护数字?
-
如果您可以将您的值存储在
TreeSet中,您将获得非常有效的操作,而且工作量很少。 -
如果你的数组是
[a_1, a_2, ..., a_n],你可以在扩充数组[(a_1, 1), (a_2, 2), ..., (a_n, n)]上运行QuickSelect