K阶统计搜索
Posted
技术标签:
【中文标题】K阶统计搜索【英文标题】:Kth order statistic search 【发布时间】:2012-12-17 20:38:56 【问题描述】:所以我实现了我自己的第 k 阶统计搜索来查找未排序数组中的第 k 个最大元素。但是我刚刚意识到我使用的算法(可以在这里找到:http://pine.cs.yale.edu/pinewiki/QuickSelect)返回元素本身,但是我实际上想返回第 k 个最大元素的索引。有没有办法做到这一点?
【问题讨论】:
不,因为在这种情况下,r 是当前堆栈帧中数组位置的索引,而不是原始数组中的索引 了解std::nth_element
。
使用 QuickSelect 返回第 k 个统计数据的原始索引是不可行的。该算法是就地的,它会打乱数组。您必须在开始时复制原始数组(或在元素移动时跟踪元素,这也需要 O(n) 内存并且要复杂得多。)
@RafałDowgird:我认为你的评论应该是一个答案。
@NPE 确实如此。谢谢你的想法。
【参考方案1】:
使用 QuickSelect 返回第 k 个统计的原始索引是不可行的。该算法是就地的,它会打乱数组。您必须在开始时复制原始数组(或在元素移动时跟踪元素,这也需要 O(n) 内存并且要复杂得多。)
【讨论】:
以上是关于K阶统计搜索的主要内容,如果未能解决你的问题,请参考以下文章