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 }

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

  1. javascript常用排序算法实现

    毕业后,由于工作中很少需要自已去写一些排序,所以那些排序算法都忘得差不多了,不过排序是最基础的算法,还是不能落下啦,于是找了一些资料,然后用Javascript实现了一些常用的算法,具体代码如下: & ...

  2. C++ STL 常用排序算法

    C++ STL 常用排序算法 merge() 以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个序列. 例如: vecIntA,vecIntB,vecIntC是用ve ...

  3. C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素

    01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...

  4. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  5. 转载部长一篇大作:常用排序算法之JavaScript实现

    转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...

  6. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  7. 常用排序算法的python实现和性能分析

    常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...

  8. 常用排序算法java实现

    写在前面:纸上得来终觉浅.基本排序算法的思想,可能很多人都说的头头是到,但能说和能写出来,真的还是有很大区别的. 今天整理了一下各种常用排序算法,当然还不全,后面会继续补充.代码中可能有累赘或错误的地 ...

  9. 我们一起来排序——使用Java语言优雅地实现常用排序算法

    破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...

  10. Python实现常用排序算法

    Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...

随机推荐

  1. golang: 模仿 VictoriaMetrics 中的做法,通过把局部变量放在自定义 Context 对象中来做到hot path 的 0 alloc

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 使用 benchmark 压测过程中通常会出现这样的信息: ...

  2. SignalR系列文章01---MVC项目中创建demo

    1.  新建mvc项目,引入指定的nuget包 2.  新增加一个集成器类添加如下的代码 /// <summary> /// 供客户端调用的服务器端代码 /// </summary& ...

  3. Redis如何批量删除指定前缀的key

    批量删除指定前缀的Key有两中方法,一种是借助 redis-cli,另一种是通过 SCAN 命令来遍历所有匹配前缀的 key,并使用 DEL 命令逐个删除它们. redis-cli 使用 Redis ...

  4. 从零开始配置 vim(4)——键盘映射的一些技巧

    通过前面的学习,我们已经知道了如何进行键盘映射,并且也知道了在任何场合应该使用非递归版本的映射.这篇再介绍一些使用关于快捷键映射的内容作为收尾 快速编辑 vimrc 文件 通过前面掌握的知识,相信各位 ...

  5. go中bufio使用小结

    bufio 前言 例子 bufio 源码解析 Reader对象 实例化 ReadSlice ReadString ReadLine Peek Scanner Give me more data Err ...

  6. Visual Studio安装教程、Visual Studio2017软件提供,版本序列号丨编写第一个程序。

    一.安装步骤 1.安装前注意一下自己电脑的IE浏览器是不是10 版本及以上的,如果不是要先升级到10才能安装 Visual Studio2017.打开IE浏览器,点击[设置]接着点击[关于]即可查看. ...

  7. C++ STL 标准模板库(非变易/变易)算法

    C++ STL模板是惠普实验室开发的标准开发模板,STL是C++的一部分,STL可分为容器(containers).迭代器(iterators).空间配置器(allocator).配接器(adapte ...

  8. git操作 手写稿

  9. (C语言)每日代码||2023.12.24||fwrite()可以写入字符数组中的'\0'

    void test() { FILE* fp = fopen("test.txt", "w"); if (fp == NULL) { perror(" ...

  10. 从CPU100%高危故障到稳定在10%:一个月的优化之旅,成功上线!

    引言 经过三个月的开发,项目通过了所有测试并上线,然而,我们发现项目的首页几乎无法打开,后台一直发生超时错误,导致CPU过度负荷.在这次项目开发过程中,我制定了一份详细的技术优化方案.考虑到客户无法提 ...