一:介绍

常用的STL排序算法包括sort,reverse,merge,random_shuffle。

二:sort:对容器内元素进行排序

1.函数原型

sort(iterator begin, iterator end) 默认以升序方式对元素进行排序

sort(iterator begin, iterator end, _Pred) 自定义方式对元素排序

2.操作

#include <iostream>
#include <algorithm>
#include <vector>using namespace std;
bool Less(int m, int n)
{return m < n;
}
bool Greater(int m, int n)
{return m > n;
}int main()
{vector<int> v{ 1,5,3,7,9 };sort(v.begin(), v.end());//1,3,5,7,9sort(v.begin(), v.end(), Greater);//9,7,5,3,1
}

三:  reverse:翻转指定范围元素

1.函数原型

reverse(iertator begin, iterator end)

2.操作

#include <iostream>
#include <algorithm>
#include <vector>using namespace std;int main()
{vector<int> v{ 1,5,3,7,9 };reverse(v.begin(), v.end());//9,7,3,5,1
}

四:merge:容器元素合并,并储存到另一个容器中

1.函数原型

//begin1和begin2必须是有序的,dest_begin遵循输入的排序规则

merge(iterator begin1, iterator end1, iterator begin2, iterator end2, iterator dest_begin)

//begin1和begin2以及dest_begin都必须遵循_Pred的规则

merge(iterator begin1, iterator end1, iterator begin2, iterator end2, iterator dest_begin, _Pred)

2.操作

#include <iostream>
#include <algorithm>
#include <vector>using namespace std;
bool Less(int m, int n)
{return m < n;
}
bool Greater(int m, int n)
{return m > n;
}int main()
{vector<int> v{ 1,5,3,7,9 };vector<int> v1{ 11,15,13,17,19 };vector<int> v2;v2.resize(v.size() + v1.size());sort(v.begin(), v.end());sort(v1.begin(), v1.end());//输入两个容器元素必须是有序的,否则会报错//merge(v.begin(), v.end(), v1.begin(), v1.end(), v2.begin());////排序规则必须遵循输入容器的排序规则merge(v.begin(), v.end(), v1.begin(), v1.end(), v2.begin(), Less);
}

五:random_shuffle:指定范围内的元素随机调整次序

1.函数原型

random_shuffle(iterator begin, iterator end)

//以随机种子rand_func调整次序

random_shuffle(iterator begin, iterator end, rand_func)

2.操作

#include <iostream>
#include <algorithm>
#include <vector>
#include <random>using namespace std;int randFunc(int n)
{return rand() % n;
}int main()
{vector<int> v{ 1,5,3,7,9 };//random_shuffle(v.begin(), v.end());srand(unsigned(std::time(0)));//srand函数是随机数发生器的初始化函数。random_shuffle(v.begin(), v.end(), randFunc);
}

STL之算法——排序算法相关推荐

  1. STL常用的排序算法

    常用的排序算法 merge() sort() random_shuffle() reverse() merge() 以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个 ...

  2. 排序算法--排序算法汇总

    排序算法无疑是学习数据结构中的重点内容,本文将给出排序算法的汇总. 下面是具体的实现: #include<stdio.h> #include<stdlib.h> #includ ...

  3. java 算法 排序算法_Java七种排序算法以及实现

    Java常见七种排序算法以及实现 最近学习一些排序算法,怕自己以后忘记就打算整理起来供自己复习 萌新一枚学习Java没多久,以下仅供参考.如有错误希望大佬指正,欢迎大家在评论区交流探讨. 1.冒泡排序 ...

  4. php+堆排序算法,排序算法-堆排序-php

    什么是堆排序 堆排序是我们经常使用的排序算法,它是利用堆的结构进行排序,堆是一种二叉树结构,并且它的父节点的值都大于子节点或者都小于子节点,如果大于,就是大顶堆,如果小于就是小顶堆. 根据堆的定义,我 ...

  5. 数据结构与算法 / 排序算法 / 堆排序

    一.定义 借助堆结构实现的排序算法被称为堆排序. 二.过程说明 1.建堆 (1)方法1 原地建堆,对于数组来说,从前往后:对于树来说,从下向上. 将数组的第一个元素作为堆顶,第二个元素做向堆中插入数据 ...

  6. 数据结构与算法 / 排序算法(3)

    一.桶排序(Bucket sort) 1.原理 将要排序的数据分到几个有序的桶里,每个桶里的数据再进行排序.桶内的数据排序完毕之后,再把桶里的数据依次取出,组成的序列就是有序的了. 2.原地排序? 属 ...

  7. 数据结构与算法 / 排序算法(2)

    一.归并排序 1.原理 采用分治思想.将数组分成前后两部分,先将这两部分进行排序,然后再将二者合并即可. 2.原地排序? 不属于原地排序.因为每次合并都需要申请大小为 n 的临时数组用于保存合并之后的 ...

  8. 数据结构与算法 / 排序算法(1)

    零.前言 1.常用的排序算法总结 排序算法种类 时间复杂度 是否基于比较 冒泡.插入.选择 O(n^2) √ 快排.归并 O(nlogn) √ 桶.计数.基数 O(n) × 2.算法的内存消耗 - 原 ...

  9. js 实现2的n次方计算函数_JS中数据结构与算法---排序算法

    排序算法的介绍 排序也称排序算法 (Sort Algorithm),排序是将 一组数据 , 依指定的顺序 进行 排列的过程 . 排序的分类 内部排序 : 指将需要处理的所有数据都加载 到 内部存储器( ...

  10. [算法]-排序算法之希尔排序

    希尔排序算法思想 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序. 基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个"增量"的元素组成的)分别进行直接插入排序 ...

最新文章

  1. python环境问题踩坑
  2. Windows系统如何使用宝塔面板一键快速搭建本地服务器环境(LNMP/LAMP)
  3. AWS 计算云sagemaker有个功能session超过12小时会提示重新new一个,很赞,AWS的页面第一次看见很丑陋,当今天看到这个提示的时候发现它们可能更注重里子
  4. 手机通过WIFI连上ZXV10 H618B路由器但不能上网问题的解决
  5. 【转】如果要像钢铁侠那样看世界,谷歌眼镜远不够!还有这些技术问题需要解决...
  6. ReactDom.render和React.render的区别
  7. 作者:刘阳(1988-),男,军事医学科学院放射与辐射医学研究所博士生
  8. jumbo 安装mysql,关于建立社工库的经验总结
  9. python性别只能为男或女_Pycaffe实践 1)分类:性别识别
  10. 使用mysql innodb 使用5.7的json类型遇到的坑和解决办法
  11. JS SDK的标准创建原则
  12. python批量巡检服务器_python批量服务器巡检
  13. 2015 IT人才招聘趋势分析
  14. c51单片机矩阵键盘1602计算器_基于矩阵键盘1602液晶屏的简易计算器的设计系统-电子信息科学与技术课程设计说明书.doc...
  15. Java job interview:Linux操作系统的应用(红帽子)分析经验
  16. 《智能搜索和推荐系统》总结
  17. 南安第五小学计算机老师,赞!南安市第五小学预计年底完工!
  18. 电信ZNHG60光猫信息虚标
  19. 高速PCB设计指南系列(四)
  20. genymotion镜像下载慢使用迅雷下载

热门文章

  1. mysql5.0基础语句_mysql基础语句
  2. iOS----------Apple id如何关闭双重认证?
  3. 手机“入殓师”,你之前有听过吗?
  4. 从产品角度看人口政策和生育减少问题
  5. google hacking 记录
  6. 虚拟机文件无法复制到主计算机,VMware 物理机可以复制文件到虚拟机,却无法从虚拟机复制文件到物理机(已解决)...
  7. app消息推送的详细实现教程
  8. git使用kdiff3合并乱码问题
  9. 机器学习项目中不可忽视的一个密辛 - 大数定理
  10. 家用wifi的配置和重置