当前位置: 首页 > news >正文

c++之 sort()排序

sort()排序

目录

sort()排序

一、原理

二、使用方法

(1)引入头文件

(2)语法

1.方式① (默认)

2.方式②:定义降序

3.对结构体进行排序(后续会继续更新)


一、原理

sort 是标准库提供的一个非常实用的排序函数,位于 <algorithm> 头文件中。sort()并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动选用合适的排序方法

二、使用方法

(1)引入头文件

#include<algorithm>

algorithm意为算法,是c++的标准模板库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模板函数

(2)语法

        1.方式① (默认)
sort(begin, end);

begin 和 end 是迭代器,分别指向待排序区间的起始位置和结束位置的下一个位置。将[first, last) 区间内元素升序(从小到大)排列。【注意区间为左闭右开

例:

对数组进行排序

#include<bits/stdc++.h>
using namespace std;
int main()
{int a[10]={2,6,5,4,1,2,6,10,2,9};sort(a,a+10);for(int i=0;i<10;i++)cout<<a[i]<<" ";return 0;
}

对字符串进行排序

#include<bits/stdc++.h>
using namespace std;
int main()
{string a="fndskjbfirebjk";sort(a.begin(),a.end());cout<<a<<endl;return 0;
}

   2.方式②:定义降序
//自定义比较函数
bool compare(int a, int b){return a > b; // 降序排序
}
sort(begin, end, compare);

第一、二个参数同升序,第三个函数功能为自己定义的比较函数。

比较函数的规则是这样的:

    如果返回 true,那么第一个参数会被排在第二个参数之前。
    如果返回 false,则第一个参数会被排在第二个参数之后。

a > b 是降序的原因:

当我们写 a > b 作为比较函数时,意味着:

    当 a 比 b 大时,返回 true,即 a 应该排在 b 的前面。
    因为较大的值会被放在较小值的前面,这就形成了降序排列。

例:

具体例子:

假设我们有一组数字 {1, 3, 2}。

    当使用 a > b 作为比较函数时:
        比较 1 和 3:1 > 3 为 false,因此 3 应该排在 1 前面。
        比较 3 和 2:3 > 2 为 true,因此 3 继续保持在前面。
        最终的顺序是:3, 2, 1。

对比:

如果我们使用 a < b,则会形成升序排序:

    当 a 小于 b 时返回 true,所以较小的值会被放在前面,形成升序排列。

    因此,a > b 实现了降序排序,而 a < b 实现了升序排序。

3.对结构体进行排序(后续会继续更新)

结构体排序

    http://www.xdnf.cn/news/449623.html

    相关文章:

  1. Unity 小提示与小技巧[特殊字符]
  2. 基于C#实现中央定位服务器的 P2P 网络聊天系统
  3. 大二java第一面小厂(挂)
  4. C++【STL】(2)string
  5. 直流电机风速仪
  6. 免费Ollama大模型集成系统——Golang
  7. 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ |搭建项目框架
  8. lua 作为嵌入式设备的配置语言
  9. windows系统下编译libdxfrw项目进行dxf文件解析至qt项目中
  10. Standalone 模式配置及运行
  11. RabbitMQ是什么?应用场景有哪些?
  12. 赋能行业数字化转型-报关单识别接口
  13. 通用软件项目技术报告 - 导读II
  14. 跨域的几种方案
  15. MySQL 存储函数[特殊字符] VS 存储过程[特殊字符]
  16. 二手车估值接口介绍
  17. sql sql复习
  18. python如何设置excel单元格边框样式
  19. C++ 在 Windows 的开发经验与解决方案
  20. 【Linux网络】TCP全连接队列
  21. Android学习总结之kotlin篇(二)
  22. 更换git位置并在pycharm中重新配置
  23. Vue.js 组件开发指南
  24. 力扣144题:二叉树的前序遍历(递归)
  25. 倍福 TC3 PID 功能块 引脚功能及PID控制用法
  26. windows运行bat闪退
  27. 「Mac畅玩AIGC与多模态37」开发篇32 - 基于工作流的双插件信息整合与展示优化
  28. 抢跑「中央计算+区域控制」市场,芯驰科技高端智控MCU“芯”升级
  29. 微机原理与接口技术知识点总结——8086微处理器ddddd
  30. C++红黑树