第 n 个元素的算法

Posted

技术标签:

【中文标题】第 n 个元素的算法【英文标题】:algorithm for nth_element 【发布时间】:2011-01-24 10:48:01 【问题描述】:

我最近发现在 STL 中有一个名为 nth_element 的方法。引用描述:

Nth_element 类似于 partial_sort,因为它部分 订购一系列元素:它 排列范围 [first, last) 这样 指向的元素 迭代器 nth 与 将在该位置的元素 如果整个范围 [first, last) 有 被排序。此外,没有一个 [nth, last) 范围内的元素是 小于中的任何元素 范围 [第一个,第 n 个)。

它声称平均具有 O(n) 复杂度。算法是如何工作的?我找不到任何解释。

【问题讨论】:

【参考方案1】:

这叫做选择算法,***上有一个不错的页面:http://en.wikipedia.org/wiki/Selection_algorithm

另请阅读订单统计信息:http://en.wikipedia.org/wiki/Order_statistic

【讨论】:

【参考方案2】:

很可能是中位数算法。

http://en.wikipedia.org/wiki/Selection_algorithm#Linear_general_selection_algorithm_-_.22Median_of_Medians_algorithm.22

【讨论】:

以上是关于第 n 个元素的算法的主要内容,如果未能解决你的问题,请参考以下文章

各种排序算法复杂度和稳定性分析

全排列算法

008实现一个算法从一个单链表中返回倒数第n个元素(keep it up)

python 下的数据结构与算法---6:6大排序算法

O(klogk) 时间算法从二进制堆中找到第 k 个最小元素

STL_算法_依据第n个元素排序(nth_element)