STL 中的sort 有好几个,sort/partial_sort/partition/nth_element
要include <algorithm>
#include <iostream>
#include <list>
#include <vector>
#include <queue>
#include <set>
#include <string>
#include <algorithm>
using namespace std;
bool compare(int& lhs, int& rhs){
if(lhs<rhs) return 1;
else return 0;
}
bool partition_func(int hs){
return (hs>=7);
}
int main ()
{
vector<int> ivec;
vector<int>::iterator it;
for(int i=1;i<=10;i++){
ivec.push_back(i);
}
random_shuffle(ivec.begin(),ivec.end());
cout<<"original:"<<endl;
for(it=ivec.begin();it!=ivec.end();it++)
cout<<*it<<" ";
cout<<endl;
vector<int> ivec1(ivec);
sort(ivec1.begin(),ivec1.end(),compare);
cout<<"sort"<<endl;
for(it=ivec1.begin();it!=ivec1.end();it++)
cout<<*it<<" ";
cout<<endl;
///
vector<int> ivec2(ivec);
partial_sort(ivec2.begin(),
ivec2.begin()+ivec2.size()/2,
ivec2.end(),
compare);
cout<<"partial sort"<<endl;
for(it=ivec2.begin();it!=ivec2.end();it++)
cout<<*it<<" ";
cout<<endl;
//
vector<int> ivec3(ivec);
vector<int>::iterator goodend = ivec3.begin()+3;
nth_element(ivec3.begin(),
goodend,
ivec3.end(),
compare);
cout<<"nth_element"<<endl;
for(it=ivec3.begin();it!=ivec3.end();it++)
cout<<*it<<" ";
cout<<endl;
//
vector<int> ivec4(ivec);
vector<int>::iterator bound;
bound = partition(ivec4.begin(),ivec4.end(),partition_func);
cout<<"partition:"<<endl;
for(it=ivec4.begin();it!=bound;it++)
cout<<*it<<" ";
cout<<endl;
return 0;
}