STL_算法(26)_重排和分区 random_shuffle() ;partition() ;stable_partion()

来源:互联网 发布:java验证码工具类 编辑:程序博客网 时间:2024/06/06 09:06

random_shuffle()

partition()

stable_partion()


#include<iostream>#include<algorithm>#include<vector>using namespace std;int main(){vector<int> ivec;for(int i = 0; i <= 9; i++)ivec.push_back(i);for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;random_shuffle(ivec.begin(), ivec.end());for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;//system("pause");return 0;}







#include<iostream>#include<algorithm>#include<vector>//#include<functional>using namespace std;int main(){vector<int> ivec;vector<int> ivec2;vector<int> ivec3;for(int i = 1; i <= 9; i++){ivec.push_back(i);ivec2.push_back(i);ivec3.push_back(i);}for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;random_shuffle(ivec.begin(), ivec.end());for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;cout<<endl;for(vector<int>::iterator iter = ivec2.begin(); iter != ivec2.end(); iter++)cout<<*iter<<' ';cout<<endl;// partition 是不稳定的分区算法vector<int>::iterator pos1;pos1 = partition(ivec2.begin(), ivec2.end(), not1(bind2nd(modulus<int>(), 2)));for(vector<int>::iterator iter = ivec2.begin(); iter != ivec2.end(); iter++)cout<<*iter<<' ';cout<<endl;for(vector<int>::iterator iter = ivec3.begin(); iter != ivec3.end(); iter++)cout<<*iter<<' ';cout<<endl;vector<int>::iterator pos2;pos2 = stable_partition(ivec3.begin(), ivec3.end(), not1(bind2nd(modulus<int>(), 2)));// statble_partition()是不稳定的算法for(vector<int>::iterator iter = ivec3.begin(); iter != ivec3.end(); iter++)cout<<*iter<<' ';cout<<endl;//system("pause");return 0;}






0 0
原创粉丝点击