基本语法

首先,C++中使用sort函数的时候需要加上头文件#include<algorithm>
并且sort函数的语法格式为:

void sort (RandomAccessIterator first, RandomAccessIterator last);

也可以自定义排序规则comp

void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

注意:从sort函数语法格式中的RandomAccessIterator就能看出,sort只能用在容器支持的迭代器类型必须为随机访问的迭代器

复杂度

STL的sort()算法,数据量大时采用快速排序(Quick Sort),分段递归排序。一旦分段后的数据量小于某个阈值,为避免Quick Sort的递归调用带来过大的额外开销,就改用Insertion Sort(插入排序)。如果递归层次过深,还会改用Heap Sort(堆排序)。

快排的思想就是分段递归,具体可以参考本连接。

因此平均时间复杂度为:O(nlogn)

哪些容器能用sort函数

string容器
vector容器
deque容器
以上三种容器都可以使用sort函数。

以下几种容器不能使用sort函数。
C++中,set 和 map 分别提供以下三种数据结构,其底层实现以及优劣如下表所示:

集合 底层实现 是否有序 数值是否可以重复 能否更改数值 查询效率 增删效率
std::set 红黑树 有序 O(nlogn) O(nlogn)
std::multiset 红黑树 有序 O(nlogn) O(nlogn)
std::unordered_set 哈希表 无序 O(1) O(1)

红黑树是一种平衡二叉搜索树,所以key值是有序的,但key不可以修改,改动key值会导致整棵树的错乱,所以只能删除和增加。

映射 底层实现 是否有序 数值是否可以重复 能否更改数值 查询效率 增删效率
std::map 红黑树 key有序 key不可重复 key不可修改 O(nlogn) O(nlogn)
std::multimap 红黑树 key有序 key可重复 key不可修改 O(nlogn) O(nlogn)
std::unordered_map 哈希表 key无序 key不可重复 key不可修改 O(1) O(1)

此外,map支持下标操作,set不支持下标操作。
以上两表来源

从上面表格可以看出set、multiset、map、multimap、unordered_set、unordered_map都不能使用sort函数进行排序。
如果需要将其排序的话,需要借助vector容器。

unordered_map<char, int> map;
//map容器赋值后,再新建一个vector容器,并初始化如下:
vector<pair<char, int>> v(map.begin(), map.end());

从而再借助自定义的sort函数中comp排序规则

//以map中value值的升序排序
bool mysort(pair<char, int>& p1, pair<char, int>& p2) {return p1.second < p2.second;
}
//从而运用sort函数排序
sort(v.begin(), v.end(), mysort);

对于list容器的sort函数,不能使用algorithm下的sort()函数,但是可以使用list容器自带的sort进行排序

list<int> l;
l.sort(); //默认从小到大排序

也可以自定义排序

bool myCompare(int val1 , int val2)
{return val1 > val2;
}
l.sort(myCompare);  //指定排序规则,从大到小

C++中sort函数相关推荐

  1. matlab sort descend,详解Matlab中 sort 函数用法

    搜索热词 (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,3; ...

  2. php sort函数,php中sort函数的功能起什么作用呢?

    摘要: 下文讲述php中sort函数的功能讲解,如下所示: sort函数功能说明: 对数组中元素值按照字母的升序进行排序 sort语法: sort(array,sortingtype); ------ ...

  3. java中sort函数的使用

    java中sort函数的使用 写在前面 sort函数的基本格式 第一种基本格式 第二种基本格式 第三种基本格式cmp 函数的基本格式 写在前面 想必大家都知道C++里面的sort用过的都知道这个函数是 ...

  4. C++中SORT函数使用方法

    C++中SORT函数使用方法 一.sort函数 1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑! ...

  5. php之sort,php中sort函数的使用方法

    php中sort函数的使用方法 发布时间:2020-09-08 10:44:27 来源:亿速云 阅读:99 作者:小新 小编给大家分享一下php中sort函数的使用方法,相信大部分人都还不怎么了解,因 ...

  6. sort函数降序排列matlab,详解Matlab中 sort 函数用法

    (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,5,3;2,4 ...

  7. python中sort函数是什么意思_python中sort和sorted函数

    在学习python的过程中,感觉python中的排序相和c++中的泛型算法还是比较相似的,但相对于c++而言更加简单易用. python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性 ...

  8. python中sort函数源代码_Python中sort和sorted函数代码解析

    Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...

  9. C++中sort函数从大到小排序的两种方法

    1.sort函数描述 而且,sort函数的算法效率相当于快排,使用sort函数有时候可能比我们自己写一个排序算法,可能效率更高. 2.使用sort函数排序 #include <iostream& ...

  10. C++中sort函数详解

    原文链接点这 0.简介 sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序.sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数 ...

最新文章

  1. PTA 基础编程题目集 7-21 求特殊方程的正整数解 C语言
  2. 如何设计 QQ、微信、微博、Github 等第三方账号登陆 ?(附表设计)
  3. Redis实现分布式锁1
  4. mapgis明码文件转为点线面文件_手机上word文档可以转为pdf文件吗?
  5. github单独下载某个文件或文件夹
  6. Linux系统修改环境变量PATH路径
  7. c#自定义事件的使用方法
  8. 蓝桥杯 ALGO-94 算法训练 新生舞会
  9. 理解偏倚:可靠结果的先决条件
  10. c++与unreal 的uc脚本交互
  11. 修改DevExpress中英文提示,将英文改为中文
  12. 少样本学习系列(三)【Optimization-Based Methods】
  13. 桌面无法显示计算机,win10 桌面计算机无法显示
  14. 全军出击 iOS和Android,绝地求生全军出击安卓和ios能一起玩吗_绝地求生全军出击安卓ios数据互通吗_玩游戏网...
  15. Firefox浏览器无法安装firebug和firepath插件问题解决
  16. DCDC与LDO浅析
  17. 浅谈~区块链的现状与未来!
  18. 从中国封建历史的发展来理解云计算、雾计算、边缘计算以及云原生之间的关系
  19. PADS Logic电路原理pcb设计(线路硬件设计实践问题总结)
  20. python 机器学习(引言-莺尾花分类)

热门文章

  1. 企业微信调用发送应用消息接口返回错误代码301002
  2. “世界上体积最小的游乐园”——酒分之一的酒世界理想
  3. 计算机组成原理测试习题集3
  4. lisp和python_给 Lisp 程序员的 Python 简介
  5. 控制 html元素 显示/隐藏
  6. 倍福工控机twincat3备份
  7. 在unity向量空间内绘制几何(1):通过将极坐标转换为直角坐标,绘制阿基米德螺线,对数螺线与玫瑰线等几何图形
  8. 赵沁平院士:扎实推荐虚拟现实产业健康发展
  9. android 模拟器uuid,某APP 注册之uuid详解之从打开APP日志入手
  10. Android 主题Theme样式一键换肤,非常简单(附小案例)