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. TienChin 渠道管理-配置字典常量

    在字典管理当中添加渠道状态 channel_status:渠道状态 分别为: 正常,键值为1,回显样式为 success 禁用,键值为0,回显样式为 info !> 有个注意点:Vue3 当中 ...

  2. 推荐系统[四]:精排-详解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwise相关评价指标,超详细知识指南。

    0.前言召回排序流程策略算法简介 推荐可分为以下四个流程,分别是召回.粗排.精排以及重排: 召回是源头,在某种意义上决定着整个推荐的天花板: 粗排是初筛,一般不会上复杂模型: 精排是整个推荐环节的重中 ...

  3. Flask 实现Token认证机制

    在Flask框架中,实现Token认证机制并不是一件复杂的事情.除了使用官方提供的flask_httpauth模块或者第三方模块flask-jwt,我们还可以考虑自己实现一个简易版的Token认证工具 ...

  4. PLSQL Developer汉语设置

    PLSQLQ Developer是由Oracle公司推出的数据库开发工具,具有很好的移植性和适应性.但是当我们安装完成Oracle11g PLSQL Developer工具后发现状态栏的显示是英文,对 ...

  5. 案例:DG备库报错ORA-600[2619]致使mrp进程异常终止

    很多刚入行的DBA往往一看有ORA-600这类错误就不知所措,直接就想寻求中高级DBA支持,甚至在网上还看到有人说,判断一个Oracle DBA是否达到中级以上,就是看其是否可以独立思考处理ORA-6 ...

  6. sanic和tornado的简单性能测试

    操作系统 : CentOS7.3.1611_x64 Python 版本 : 3.6.8 tornado版本:6.0.2 sanic版本:19.9.0 CPU : Intel(R) Core(TM) i ...

  7. Linux中$home和波浪号~

    在Linux中当前用户的主目录可以有三种表示方法,都是等效的[正常不改配置情况下]例如用户名为sy,进入当前用户的主目录/home/sy 输入cd ~ 或输入cd $HOME 或输入cd /home/ ...

  8. 轻松玩转makefile | 函数的使用

    前言 在上一篇文章中,尽管使用了变量和模式,但还是有不够好的地方,在Makefile中要指明每一个源文件,我们接下来利用函数对其进行优化,并介绍其他常用的一些函数. 依旧是以fun.c ,main.c ...

  9. Miniconda 安装和使用笔记

    Miniconda是Anaconda的简化版, 可以管理多个Python版本的环境. 实际使用的话, 占用的空间不会很小, 我跑一些正常的应用后, 安装目录占用空间4.3GB, 安装建议要预留10到2 ...

  10. Vue实现静态列表增删查功能

    知识点 1.双向数据绑定 2.自定义指令 3.自定义过滤器 4.v-for循环对象数组 5.ES6操作数组的新方法:forEach some filter findIndex 实现效果 页面源码 &l ...