c++局部排序
#include<iostream>
#include<algorithm>
#include<deque>
#include<functional>
#include<vector>
#include<iterator>
using namespace std;
int main()
{
deque<int> ide;
for (int i = 3; i <= 7; ++i)
ide.push_back(i);
for (int i = 2; i <= 6; ++i)
ide.push_back(i);
for (int i = 1; i <= 5; ++i)
ide.push_back(i);
for (auto iter = ide.begin(); iter != ide.end(); ++iter)
cout << *iter << " ";
cout << endl;
//局部排序
partial_sort(ide.begin(), ide.begin() + 5, ide.end());//只是前边的5个,排序了
for (auto iter = ide.begin(); iter != ide.end(); ++iter)
cout << *iter << " ";
cout << endl;
partial_sort(ide.begin(), ide.begin() + 5, ide.end(),greater<int>());
for (auto iter = ide.begin(); iter != ide.end(); ++iter)
cout << *iter << " ";
cout << endl;
cout << endl;
//一边复制一边排序
deque<int> ideq;
vector<int> ivec6(6);
vector<int> ivec30(30);
for (int i = 3; i <= 7; ++i)
ideq.push_back(i);
for (int i = 2; i <= 6; ++i)
ideq.push_back(i);
for (int i = 1; i <= 5; ++i)
ideq.push_back(i);
for (auto iter = ideq.begin(); iter != ideq.end(); ++iter)
cout << *iter << " ";
cout << endl;
//只有6个位置,只能复制6个数据
partial_sort_copy(ideq.begin(), ideq.end(), ivec6.begin(), ivec6.end());
copy(ivec6.begin(), ivec6.end(), ostream_iterator<int>(cout, " "));
cout << endl;
//算法的返回值是copy过来的元素的下一个
auto pos=partial_sort_copy(ideq.begin(), ideq.end(), ivec30.begin(), ivec30.end(),greater<int>());
copy(ivec30.begin(), pos, ostream_iterator<int>(cout, " "));
//后边的数据不显示
system("pause");
return 0;
}