nth_element(b, n, e)
nth_element(b, n, e,p)
对比:partion()算法
#include<iostream>
#include<algorithm>
#include<deque>
#include<iterator>
#include<functional>
using namespace std;
int main()
{
deque<int> ideq;
for(int i = 3; i <= 7; i++)
ideq.push_back(i);
for(int i = 2; i <= 6; i++)
ideq.push_back(i);
for(int i = 1; i <= 5; i++)
ideq.push_back(i);
for(deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
nth_element(ideq.begin(), ideq.end()+ 3, ideq.end()); // 默认是小到大
copy(ideq.begin(), ideq.begin() + 4, ostream_iterator<int>(cout, " "));
cout<<endl;
nth_element(ideq.begin(), ideq.end() - 4, ideq.end());
copy(ideq.end() - 4, ideq.end(), ostream_iterator<int>(cout, " "));
cout<<endl;
// 加 一个函数对象
nth_element(ideq.begin(), ideq.begin() + 3, ideq.end(), greater<int>());// 从小到大排序
copy(ideq.begin(), ideq.begin() + 4, ostream_iterator<int>(cout, " "));
cout<<endl;
//
return 0;
}