博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ STL常用算法-63-排序算法_sort/random_shuffle
阅读量:4301 次
发布时间:2019-05-27

本文共 2058 字,大约阅读时间需要 6 分钟。

这篇来学习几个常见的排序相关的算法,前面我们学习过sort()这个排序算法,传入迭代器开始和结束,第三个参数如果不填,默认就是升序,如果第三个参数是一个仿函数,返回值类型是bool,也叫谓词,就按照你传入的规则进行排序。

 

1.排序相关的算法

sort   //对容器内元素进行排序random_shuffle //洗牌,指定范围内元素随机调整次序merge  //容器元素合并,并存储到另一个容器中reverse  //反转指定范围的元素

 

2.sort

作用:给容器指定范围的元素进行排序

函数原型:sort(iterator begin, iterator end, _Pred);

一共三个参数,迭代器开始位置,迭代器结束位置,谓词,仿函数返回值类型是bool

下面来一个例子,先是默认排序,然后倒序

#include 
#include
#include
#include
using namespace std;class MyPrint{public: void operator()(int val) { cout << val << " "; }};class MySort{public: bool operator()(int v1, int v2) { return v1 > v2; }};void test01(){ vector
v; v.push_back(10); v.push_back(30); v.push_back(40); v.push_back(20); v.push_back(50); // sort排序,默认升序 sort(v.begin(), v.end()); for_each(v.begin(), v.end(), MyPrint()); cout << endl; // sort排序,降序 vector
v2; v2.push_back(10); v2.push_back(30); v2.push_back(40); v2.push_back(20); v2.push_back(50); sort(v2.begin(), v2.end(), MySort()); for_each(v2.begin(), v2.end(), MyPrint()); cout << endl;}int main(){ test01(); system("pause"); return 0;}

验证结果

 

3.random_shuffle

可以把指定范围内的元素随机打乱顺序

函数原型:random_shuffle(iterator beg, iterator end);

代码示例:

#include 
#include
#include
#include
using namespace std;class MyPrint{public: void operator()(int val) { cout << val << " "; }};void test01(){ vector
v; v.push_back(10); v.push_back(30); v.push_back(40); v.push_back(20); v.push_back(50); // random_shuffle 打乱顺序 random_shuffle(v.begin(), v.end()); for_each(v.begin(), v.end(), MyPrint()); cout << endl; random_shuffle(v.begin(), v.end()); for_each(v.begin(), v.end(), MyPrint()); cout << endl; random_shuffle(v.begin(), v.end()); for_each(v.begin(), v.end(), MyPrint()); cout << endl;}int main(){ test01(); system("pause"); return 0;}

测试结果:

这个结果,每次运行都不一样,5个数字随机打乱顺序

转载地址:http://mexws.baihongyu.com/

你可能感兴趣的文章
HTTPS
查看>>
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel 操作redis的各种数据类型
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
laravel 定时任务秒级执行
查看>>
浅析 Laravel 官方文档推荐的 Nginx 配置
查看>>
Swagger在Laravel项目中的使用
查看>>
Laravel 的生命周期
查看>>
CentOS Docker 安装
查看>>
Nginx
查看>>
Navicat远程连接云主机数据库
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>