//分隔和分隔排序
#include "stdafx.h"
#include<iostream>
#include<algorithm>
#include<vector>
#include<functional>
#include<ctime>
using namespace std;
int main()
{
srand(static_cast<unsigned int>(time(0)));
vector<int>v;
v.reserve(10);
for(int i=0;i<10;i++)
v.push_back(rand()%20);
cout<<"数列例如以下:"<<endl;
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
//把最小的5个数放在前面,前5个数进行了排序
partial_sort(v.begin(),v.begin()+5,v.end());
cout<<endl;
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
//把最大的5个数放在前面,前5个数进行了排序
partial_sort(v.begin(),v.begin()+5,v.end(),greater<int>());
cout<<endl;
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
cout<<endl;
//以8为分界点,把小于8的数放到前面,不排序
vector<int>::iterator it=partition(v.begin(),v.end(),bind2nd(less<int>(),8));
//显示小于8的结果
copy(v.begin(),it,ostream_iterator<int>(cout," "));
cout<<endl;
getchar();
return 0;
}