nth_element 是 C++ STL 中的一个函数,它可以在给定区间内部排序,使得指定元素处于指定位置。该函数有三个参数:
- 第一个参数是待排序区间的首元素迭代器
- 第二个参数是待排序区间的尾元素迭代器的下一个位置
- 第三个参数是待排序区间中需要排在第 n 位的元素的迭代器。
例如:
#include <algorithm>
#include <vector>
int main() {
std::vector<int> v{ 3, 1, 4, 1, 5, 9, 2, 6 };
std::nth_element(v.begin(), v.begin() + v.size() / 2, v.end());
// 此时 v 的中位数已经排在了第 v.size()/2 位
}
注意:nth_element 只保证第 n 位元素正确,其他位置的元素的顺序是不确定的。