vector random_shuffle(v1.begin(),v1.end());
for_each(v1.begin(),v1.end(),show
());
cout <<"\n";
random_shuffle(v1.begin(),v1.end());
for_each(v1.begin(),v1.end(),show
());
cout <<"\n";
random_shuffle(v1.begin(),v1.end());
for_each(v1.begin(),v1.end(),show
());
cin.get();
}
运行结果:

用途:随机洗牌
7. partition分区
#include
#include
#include
usingnamespacestd;
template
classshow
{
public:
void operator ()(T &t)
{
cout <
}
};
boolisok(intnum)
{
return (num >= 10);
}
voidmain()
{
vector
v1;
v1.push_back(20);
v1.push_back(23);
v1.push_back(6);
v1.push_back(27);
v1.push_back(5);
v1.push_back(67);
v1.push_back(10);
v1.push_back(13);
v1.push_back(14);
v1.push_back(3);
for_each(v1.begin(),v1.end(),show
());
//服务于快速排序的分区
partition(v1.begin(),v1.end(),isok);
cout <<"\n";
cout <
for_each(v1.begin(),v1.end(),show
());
cin.get();
}
运行结果:

分析,本质:

8. prev_permutation查看排序过程
#include
#include
#include
usingnamespacestd;
voidmain()
{
inta[4] = { 2, 1, 3, 10 };
do
{
cout <
//通过下面这个代码查看排序过程
} while (prev_permutation(a,a+4));
cin.get();
}
运行结果:

9.sort排序
#include
#include
#include
usingnamespacestd;
template
classshow
{
public:
void operator ()(T &t)
{
cout <
}
};
voidmain()
{
vector
myvector;
myvector.push_back('B');
myvector.push_back('A');
myvector.push_back('C');
myvector.push_back('Y');
myvector.push_back('Z');
myvector.push_back('X');
for_each(myvector.begin(),myvector.end(),show
());
//sort(one.begin(), one.begin() + 3);
sort(myvector.begin(),myvector.begin() + 3);
cout <<"\n";
for_each(myvector.begin(),myvector.end(),show
());
cin.get();
}
运行结果:

10. partial_sort部分排序
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classstudent
{
public:
stringname;
intscore;
public:
student(stringstr,intnum) :name(str),score(num)
{
}
bool operator <(conststudent &s1)const
{
returnthis->score < s1.score;
}
};
intmain()
{
vector
ss;
{
students1("totoA", 106);
ss.push_back(s1);
}
{
students1("totoB", 101);
ss.push_back(s1);
}
{
students1("totoC", 103);
ss.push_back(s1);
}
{
students1("totoD", 105);
ss.push_back(s1);
}
{
students1("totoE", 67);
ss.push_back(s1);
}
{
students1("totoF", 58);
ss.push_back(s1);
}
{
students1("totoG", 111);
ss.push_back(s1);
}
//部分排序
partial_sort(ss.begin(),ss.begin() + 4, ss.end());//部分排序
for (inti = 0;i < 7;i++)
{
std::cout << ss[i].name << ss[i].score << "\n";
}
cin.get();
}
运行结果:
