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阶统计搜索的主要内容,如果未能解决你的问题,请参考以下文章

统计数字在排序数组中出现的次数

初阶玩家的macOS 软件搜索引擎

16阶以下子环搜索:根据搜索结果自动生成代码

LeetCode - 滑动窗口极值搜索树后序遍历统计差值对划分相等子集

16阶以下子环搜索:从指定起始位置g_i开始搜索

16阶以下子环的搜索