C++//常用排序算法 sort //打乱 random_shuffle //merge 两个容器元素合并,并储存到另一容器中(相同的有序序列) //reverse 将容器内的元素进行反转

  1 //常用排序算法 sort   //打乱 random_shuffle
  2 //merge 两个容器元素合并,并储存到另一容器中(相同的有序序列)
  3 //reverse 将容器内的元素进行反转
  4 
  5 #include<iostream>
  6 #include<string>
  7 #include<vector>
  8 #include<algorithm>
  9 #include<functional>
 10 
 11 using namespace std;
 12 
 13 void myPrint(int val)
 14 {
 15     cout << val << " ";
 16 }
 17 
 18 //降序
 19 int Mysort(int v1, int v2)
 20 {
 21     return v1 > v2;
 22 }
 23 //排序
 24 void test01()
 25 {
 26     vector<int>v;
 27     v.push_back(30);
 28     v.push_back(10);
 29     v.push_back(90);
 30     v.push_back(60);
 31     v.push_back(80);
 32     v.push_back(70);
 33 
 34     //利用 sort 排序
 35     sort(v.begin(), v.end());
 36     for_each(v.begin(), v.end(), myPrint);
 37     cout << endl;
 38 
 39     //降序
 40     sort(v.begin(), v.end(), greater<int>());
 41     for_each(v.begin(), v.end(), myPrint);
 42     cout << endl;
 43 
 44     sort(v.begin(), v.end(), Mysort);
 45     for_each(v.begin(), v.end(), myPrint);
 46     cout << endl;
 47 }
 48 
 49 //打乱 random_shuffle
 50 void test02()
 51 {
 52     srand((unsigned int)time(NULL));
 53     vector<int>v2;
 54     for (int i = 0; i < 10; i++)
 55     {
 56         v2.push_back(i);
 57     }
 58     cout << "初始化:" << endl;
 59     for_each(v2.begin(), v2.end(), myPrint);
 60 
 61     //打乱
 62     cout << "\n第一次:" << endl;
 63     
 64     random_shuffle(v2.begin(), v2.end());
 65 
 66     
 67     for (vector<int>::iterator it = v2.begin(); it != v2.end(); it++)
 68     {
 69         cout<< * it << " ";
 70     }
 71     cout << endl;
 72 
 73     cout << "第二次:" << endl;
 74 
 75     for_each(v2.begin(), v2.end(), myPrint);
 76     
 77     cout << endl;
 78 }
 79 
 80 //merge 两个有序数列 合并另一个容器中
 81 
 82 void MyPrint(int z)
 83 {
 84     cout << z << " ";
 85 }
 86 void test03()
 87 {
 88     vector<int>v1;
 89     vector<int>v2;
 90 
 91     for (int i = 0; i < 11; i++)
 92     {
 93         v1.push_back(i);
 94         v2.push_back(i + 2);
 95     }
 96     //目标容器
 97     vector<int>vTarget;
 98     //分配空间
 99     vTarget.resize(v1.size()+v2.size());
100     
101     merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
102 
103     for_each(vTarget.begin(), vTarget.end(), MyPrint);
104     cout << endl;
105 
106 }
107 //reverse 将容器内的元素进行反转
108 void test04()
109 {
110     vector<int>v;
111     v.push_back(200);
112     v.push_back(30);
113     v.push_back(80);
114     v.push_back(90);
115     v.push_back(10);
116     v.push_back(500);
117 
118     cout << "没有反转" << endl;
119     for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
120     {
121         cout << *it << " ";
122     }
123     cout << endl;
124 
125     reverse(v.begin(), v.end());
126     cout << "反转之后:" << endl;
127     for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
128     {
129         cout << *it << " ";
130     }
131     cout << endl;
132 
133 
134 }
135 
136 
137 
138 
139 int main()
140 {
141 
142     test01();
143     test02();
144 
145     test03();
146     test04();
147 
148     system("pause");
149     return 0;
150 }

 

posted on 2021-08-18 15:43  Bytezero!  阅读(40)  评论(0编辑  收藏  举报