我最近发现STL中有一个名为nth_element的方法。引用描述:
Nth_element与partial_sort类似,因为它对元素区域进行部分排序:它对区域[first,last]进行排列,使得迭代器nth所指向的元素与如果整个区域[first,last]都已排序后将处于该位置的元素相同。此外,区域[nth,last]中的任何元素都不小于区域[first,nth)中的任何元素。
它声称平均具有O(n)复杂度。算法是如何工作的?我找不到任何解释。
它被称为选择算法,维基百科对此有一个很好的页面:http://en.wikipedia.org/wiki/selection_algorithm(http://en.wikipedia.org/wiki/selection_algorithm)
另请阅读有关订单统计信息的内容:http://en.wikipedia.org/wiki/order_statistic