本文主要是介绍c++常用排序算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 常用排序算法
- 算法简介
- sort
-
- random_shuffle
-
- merge
-
- reverse
-
常用排序算法
算法简介
![在这里插入图片描述](/upload/202109/04/202109041707367496.png)
sort
功能描述
![在这里插入图片描述](/upload/202109/04/202109041707369229.png)
函数原型
![在这里插入图片描述](/upload/202109/04/202109041707371319.png)
示例
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
void myPrint(int val) {
cout << val << " ";
}
void test() {
vector<int> v;
v.push_back(10);
v.push_back(30);
v.push_back(20);
v.push_back(60);
v.push_back(50);
//用sort进行排序,默认是升序
sort(v.begin(), v.end());
//遍历输出 10 20 30 50 60
for_each(v.begin(), v.end(), myPrint);
cout << endl;
//改变为降序
sort(v.begin(), v.end(), greater<int>());
//遍历输出 60 50 30 20 10
for_each(v.begin(), v.end(), myPrint);
}
int main() {
test();
return 0;
}
random_shuffle
功能描述
![在这里插入图片描述](/upload/202109/04/202109041707373072.png)
函数原型
![在这里插入图片描述](/upload/202109/04/202109041707375123.png)
示例
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<ctime>
using namespace std;
void myPrint(int val) {
cout << val << " ";
}
void test() {
//加入随机种子
srand((unsigned int)time(NULL));
vector<int> v;
v.push_back(10);
v.push_back(30);
v.push_back(20);
v.push_back(60);
v.push_back(50);
//用sort进行排序,默认是升序
sort(v.begin(), v.end());
//遍历输出 10 20 30 50 60
for_each(v.begin(), v.end(), myPrint);
cout << endl;
//改变为随机次序
random_shuffle(v.begin(), v.end());
//遍历输出 60 20 50 30 10
for_each(v.begin(), v.end(), myPrint);
}
int main() {
test();
return 0;
}
merge
功能描述
![在这里插入图片描述](/upload/202109/04/202109041707376842.png)
函数原型
![在这里插入图片描述](/upload/202109/04/202109041707378911.png)
示例
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
void myPrint(int val) {
cout << val << " ";
}
void test() {
vector<int> v;
//插入数据
for (int i = 0; i < 5; ++i) {
v.push_back(i);
}
vector<int> v2;
//插入数据
for (int i = 5; i < 10; ++i) {
v.push_back(i);
}
//用来存储合并值的容器
vector<int> v3;
//开辟空间用于存储合并内容
v3.resize(v.size() + v2.size());
//进行合并操作,两个容器必须是有序的
merge(v.begin(), v.end(), v2.begin(), v2.end(), v3.begin());
//遍历输出 0 1 2 3 4 5 6 7 8 9
for_each(v3.begin(), v3.end(), myPrint);
}
int main() {
test();
return 0;
}
reverse
功能描述
![在这里插入图片描述](/upload/202109/04/202109041707380792.png)
函数原型
![在这里插入图片描述](/upload/202109/04/202109041707382677.png)
示例
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
void myPrint(int val) {
cout << val << " ";
}
void test() {
vector<int> v;
//插入数据
for (int i = 0; i < 5; ++i) {
v.push_back(i);
}
//遍历输出 0 1 2 3 4
for_each(v.begin(), v.end(), myPrint);
cout << endl;
//进行反转
reverse(v.begin(), v.end());
//遍历输出 4 3 2 1 0
for_each(v.begin(), v.end(), myPrint);
}
int main() {
test();
return 0;
}
这篇关于c++常用排序算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!