algorithm排序算法
秋名山码民 人气:0前言
雨下不停,爱意难眠,说一下algorithm中的几个排序算法吧,干什么总要排个序吧,有单纯排序的算法题可以看一下,我写的码神说排序算法不多说了,来看吧,系好安全带,发车了!
一、algorithm是什么?
如果说algorithm是个什么东西的话,百度百科是这样说的,算法(algorithm),也如其名,这就是一个算法的头文件,如果展开了来说的话,可能国庆假期都不够我写的,所以说本文我们主要来说algorithm中的排序算法
二、有哪些排序算法?
大致我想到的是以下的几个排序算法,欢迎补充
- sort
- random_shuffle
- merge
- reverse
sort
根据使用的优先级来说的话,sort是在开发或者竞赛中都比较常用的排序算法,在默认的情况下,他是从小到大的排序,先来看他的默认情况吧。
#include<iostream> #include<cstdio> #include<vector>//用vector容器来存储 #include<algorithm>//算法头文件 using namespace std; void myprint(int rel) { cout << rel; } void test01() { vector<int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } //插入 sort(v.begin(), v.end()); //从小到大 for_each(v.begin(), v.end(), myprint); //遍历输出 } int main() { test01(); return 0; }
实现sort从大到小的排序算法有以下俩种
sort(v.begin(), v.end(), greater<int>()); //用greater,其中greater表示内置类型从大到小排序, //less表示内置类型从小到大排序。 //自定义函数来进行输出 bool getor(int v1, int v2) { return v1 > v2; } sort(v.begin(), v.end(), getor);
random_shuffle
random随机的,从名字我们可以猜出,这是一个打乱排好的序,从而实现随机的算法,我也喜欢把它看成一个洗牌的过程,故曰:洗牌排序,看一下实现吧。
//洗牌排序,打乱随机分配 #include<iostream> #include<cstdio> #include<algorithm> #include<vector> using namespace std; void myprint(int val) { cout << val << " "; } void test01() { vector<int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } random_shuffle(v.begin(), v.end()); for_each(v.begin(), v.end(), myprint); } int main() { test01(); return 0; }
merge
作用:俩个容器合并,并存储到另外一个容器中
条件:
1.俩个容器必须是有序的,所以可以用sort排序,排一下序
2.记得要给一个新数组分配内存
#include<iostream> #include<cstdio> #include<algorithm> #include<vector> using namespace std; void myprint(int val) { cout << " " << val; } void test01() { vector<int>v; vector<int>v1; for (int i = 0; i < 10; i++) { v.push_back(i); v1.push_back(i + 1); } vector<int>vTarget; //归并 //要提前分配内存 vTarget.resize(v.size() + v1.size()); merge(v.begin(), v.end(), v1.begin(), v1.end(), vTarget.begin()); for_each(vTarget.begin(), vTarget.end(), myprint); } int main() { test01(); return 0; }
reverse
反转,正好用它再来输出一次从大到小的排序
#include<iostream> #include<cstdio> #include<algorithm> #include<vector> using namespace std; void myprint(int val) { cout << " " << val; } void test01() { vector<int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } reverse(v.begin(), v.end()); for_each(v.begin(), v.end(),myprint); } int main() { test01(); return 0; }
总结
我能在algorithm中想到的排序函数就这些了,如果缺少哪些,欢迎补充,码神与你们一起变强,一起去new一个对象出来
加载全部内容