头文件: <algorithm>
写法:nth_element(a,a+k,a+n);从[a,a+n)中对数据“排序”,把第k小的放在a[k]位置。(注意:下标从0开始,k∈[0,n))
特点:k之前的元素都不大于a[k],k之后的元素都不小于a[k],且这些元素实际上并没有进行大小排序。
也就是说,a中有n-(k+1)个元素 >= a[k] (总共有n个元素) → 则a[k]是a中第n-k大的元素(此时从1开始数第几大)
nth_element()举个栗子
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[5]={4,3,2,1,0};
int i;
cout<<"nth_element排序前:";
for(i=0;i<5;i++)
cout<<a[i]<<" ";
cout<<endl;
nth_element(a,a+1,a+5);
cout<<"nth_element排序后:";
for(int i=0;i<5;i++){
cout<<a[i]<<" ";
}
cout<<"\n第一小的元素:"<<a[1]<<endl; //注意下标是从0開始计数的
return 0;
}