STL中的nth_element()
通过调用nth_element(start, start+n, end) 方法可以使第n大元素处于第n位置(从0开始,其位置是下标为 n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
const int VECTOR_SIZE=20;
vector<int> Numbers(VECTOR_SIZE) ;
vector<int>::iterator start,end,it;
for(int i=0;i<50;++i)
Numbers[i]=i;
random_shuffle(Numbers.begin(),Numbers.end());//random_shuffle()方法将这些数据的顺序打乱
start=Numbers.begin() ;
end=Numbers.end() ;
for(it=start; it!=end;it++)
cout<<*it<<" ";
cout<<endl;
nth_element(start,start+8,end);
for(it=start; it!=end;it++)
cout<<*it<<" ";
cout<<endl ;
return 0;
}
/*
对于一般数组的应用
*/
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int a[22];
int main()
{
int n=20;
for(int i=1;i<=n;i++)
a[i]=i;
random_shuffle(a+1,a+n+1);//random_shuffle()方法将这些数据的顺序打乱
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;
nth_element(a+1,a+8+1,a+n+1);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl ;
return 0;
}