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. Mygin实现中间件Middleware

    本篇是mygin的第六篇,参照gin框架,感兴趣的可以从 Mygin第一篇 开始看,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现. 目的 实现中间件Middleware ...

  2. HEVC扩展备用安装方法

    这个玩意微软商店免费但是下架了,购买需要RMB 安装 转到 https://store.rg-adguard.net/ 在左侧的下拉菜单选择"ProductId" 把链接中&quo ...

  3. PCIe诞生20年来最大变革!引入光学传输

    PCI-SIG组织官方宣布,已经成立新的光学工作组(Optical Workgroup),研究为PCIe规范引入光学传输接口的可能性. PCIe标准是Intel 2001年提出的,2003年发布1.0 ...

  4. HarmonyOS 实战小项目开发(二)

    HarmonyOS 实战小项目开发(二) 日常逼逼叨 在上期实战项目一中,已经对于练手项目的背景,后端搭建等做了一定的简述,那么本期将结合HarmonyOS 页面搭建个人性格测试的移动端.如有一些错误 ...

  5. 201871010111-刘佳华 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    实验三 软件工程结对项目 ========== 时间:2021-4-1 项目 内容 课程班级博客链接 课程链接 这个作业要求链接 作业要求 我的课程学习目标 1.了解软件工程过程中结对项目的开发流程 ...

  6. delphi 设置一个控件 在一个窗口的 正中间 方法

    1.选中控件,右键----postion--  最下面两个 x y 坐标,center in window

  7. Linux-rsync命令用法详解

    从字面意思上,rsync 可以理解为 remote sync(远程同步),但它不仅可以远程同步数据(类似于 scp 命令),还可以本地同步数据(类似于 cp 命令).不同于 cp 或 scp 的一点是 ...

  8. 51单片机封装库HML_FwLib_STC89/STC11

    HML_FwLib_STC89/11 项目地址 https://github.com/MCU-ZHISHAN-IoT/HML_FwLib_STC89 https://github.com/MCU-ZH ...

  9. 【Unity3D】UGUI之Text

    1 Text 简介 ​ UGUI概述 中介绍了Canvas 渲染模式.RectTransform 组件.锚点(Anchor)等,本文将介绍 UGUI 中的 Text 控件. ​ 在 Hierarchy ...

  10. Java利用反射实现运行时方法调用

    1.介绍 在这篇短文中,我们将快速了解如何在运行时使用Java反射API调用方法. 2.准备工作 来创建一个简单的类: public class Operations { public double ...