头文件:#include<algorithm>
nth_element:在数组或容器中将第几大或小的元素放到该放的位置上。(默认第几小,可以用cmp自定义为第几大)
如:nth_element(a,a+6,a+10); //在a中,找到 第七小 将其放到a[6].
但是值得注意的是:a[6]左边、右边的元素不一定有序!!!
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int cmp(int a,int b)
{
return a>b;
}
int main()
{
vector<int> s;
int a[10]={699,3,45,1,-36,20,42,3,7,12};
s.push_back(123);
s.push_back(32);
s.push_back(12);
s.push_back(986);
s.push_back(36);
s.push_back(9856);
nth_element(a,a+6,a+10); //在a中,找到 第七小
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
cout<<"a中第七小:"<<a[6]<<endl;
nth_element(a,a+4,a+10,cmp);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
cout<<"a中第5大为:"<<a[4]<<endl;
nth_element(s.begin(),s.begin()+2,s.end());//找到第三小,从零开始
for(int i=0;i<s.size();i++)
{
cout<<s[i]<<" ";
}
cout<<endl;
cout<<"s中第3小为:"<<s[2]<<endl;
nth_element(s.begin(),s.begin()+3,s.end(),cmp);
for(int i=0;i<s.size();i++)
{
cout<<s[i]<<" ";
}
cout<<endl;
cout<<"s中第4大为:"<<s[3]<<endl;
return 0;
}
运行结果: