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. word文档删除空白页

    记住两个快捷键 CTRL+Backspace Shift+Backspace 鼠标箭头放在空白的页面 按住键盘上的快捷键 就可以成功删除了不要天天看营销号设置什么磅值,全选删除啥的 效果如下

  2. 手撕Vuex-实现共享数据

    经过上一篇章介绍,完成了添加全局 $store,接下来就是实现共享数据的功能. 在 Vuex 中,共享数据是通过 state 来实现的,所以我们需要在 Nuex.js 文件中实现 state 的功能. ...

  3. 苹果新一代“超级芯片”曝光:M3 Ultra最高可达32核CPU

    近日,据外媒消息,苹果计划在2024年推出新一代"超级芯片"M3 Ultra. 据悉,M3 Ultra将大幅增加CPU核心数量,同时GPU核心数量也将适度增加. 具体来说,M3 U ...

  4. 多个request接口的功能优化处理速度

    一.原始代码功能如下,包含两个request接口的调用,耗时情况约4秒 import datetime import time import requests start_time = datetim ...

  5. 从零开始的react入门教程(十一),react ref 详解,三种写法与 ref 转发(传递)

    壹 ❀ 引 在前面的文章中,我们介绍了react的状态提升,随之引出了redux以及context,其实都说到底都是为了方便管理react的状态,让数据交互与组件通信变得更为简单.我们知道,react ...

  6. JS Leetcode 213. 打家劫舍 II 题解分析,在动态规划基础上感受分治算法的魅力

    壹 ❀ 引 本题来自LeetCode 213. 打家劫舍 II,难度中等,属于前面我们做过的198. 打家劫舍的升级版,难度同样为中等,题目描述如下: 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内 ...

  7. 从零开始的微信小程序入门教程(三),有趣且好玩的数据绑定

    壹 ❀ 引 我在从零开始的微信小程序入门教程(二),初识WXML与WXSS一文中简单介绍了小程序组件与小程序样式相关概念,在了解这两者之后,其实我们已经可以搭建出简单的静态页面,与书写HTML页面一样 ...

  8. NC15136 迷宫

    题目链接 题目 题目描述 这是一个关于二维迷宫的题目.我们要从迷宫的起点 'S' 走到终点 'E',每一步我们只能选择上下左右四个方向中的一个前进一格. 'W' 代表墙壁,是不能进入的位置,除了墙壁以 ...

  9. Spring rce CVE-2022-22965

    原理大致是这样:spring框架在传参的时候会与对应实体类自动参数绑定,通过"."还可以访问对应实体类的引用类型变量.使用getClass方法,通过反射机制最终获取tomcat的日 ...

  10. MySQL写入SQL整个执行流程

    innodb存储引擎中一条sql写入的详细流程     第0步:会先去看缓冲区有没有这条数据,如果有就不进行缓存,直接进入第三步.   第1步:会将要修改的那一行数据所在的一整页加载到缓冲池Buffe ...