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

c++中sort函数学习

sort

使用sort()函数需要使用#include<algorithm>头文件。

sort 基本用法

sort()函数可以对给定区间所有元素进行排序,sort是不稳定的排序。它有三个参数void sort( RandomIt first, RandomIt last, Compare comp ),其中[first, last)表示要排序的元素范围,cmp参数为排序准则,comp参数可以不写,如果不写的话,默认从小到大进行排序。// 非降序更准确

示例1(数组实现)

#include<iostream> #include<algorithm> using namespace std; int main() { int num[10] = {-1,5,79,1,2,8,72,3,4,0}; // 这里使用指针作为迭代器 sort(num, num + 10); for(int i = 0;i < 10;i++) { cout << num[i] << " "; }//输出结果:-1 0 1 2 3 4 5 8 72 79 return 0; }

示例2(vector实现)

#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int n; cin >> n; vector<int> iv; //空 for(int i = 0;i < n;i++) { int x; cin >> x; iv.emplace_back(x); } sort(iv.begin(),iv.end()); for(int i = 0;i < n;i++) { cout << iv[i] << ' '; } return 0; } /* 输入 5 5 23 9 0 7 输出 0 5 7 9 23 */

sort 自定义排序

// 重点是函数部分

cmp比较函数对象(即满足比较概念的对象),在第一参数小于(即先序于)第二参数时返回 true。可以自定义比较函数cmp,根据自定义的逻辑对元素进行排序,也可以自定义第一参数与第二参数的关系,返回值为 true 实现排序。//这里概念抽象应该举例

cmp函数的定义需要两个参数,参数a和参数b(a,b为排序对象的最小单位),当满足一定的条件的时候返回ture或false,当返回值为true时,第一个参数放在前面,第二个参数放在后面; false则反之。

示例一

#include<iostream> #include<algorithm> using namespace std; bool cmp(int a,int b) // 明白第一参数和第二参数的先后关系 { return a > b; // 自定义从大到小 ,重点在返回值 } int main() { int num[10] = {-1,5,79,1,2,8,72,3,4,0}; sort(num, num + 10, cmp); for(int i = 0;i < 10;i++) { cout << num[i] << " "; }//输出结果:79 72 8 5 4 3 2 1 0 -1 return 0; }

示例二

//结构体排序 #include<iostream> #include<algorithm> using namespace std; struct node { string id; int age; } a[1000]; bool cmp(node a,node b) { return a.age < b.age; // 自定义年龄从小到大 } int main() { int n; cin >> n; for(int i = 0;i < n;i++) { cin >> a[i].id >> a[i].age; } sort(a , a + n , cmp); for(int i = 0;i < n;i++) { cout << a[i].id << ' ' << a[i].age << endl; } return 0; } /* 输入 3 abc 56 fgh 17 yui 36 输出 fgh 17 yui 36 abc 56 */
http://www.jsqmd.com/news/1090966/

相关文章:

  • 【超级个体修炼手册】从“做事“到“养系统“的心态切换:用 AI 实现端到端闭环
  • Windows更新故障终极解决方案:一键重置工具使用指南
  • 第五篇:Redis 为什么不用链表保存 List?QuickList 到底是什么?
  • 高斯噪声:原理、公式、工程场景、代码实战全解(二)
  • 面试官问:反射机制是什么?(附图解+比喻+避坑指南)
  • 【超级个体】零内核入场:当你对一个产品“没理解“时,超级个体该怎么迈出第一步
  • 2026终极测评:16款降AIGC平台横评,闭眼入这款就对了!
  • 从Swish到SwiGLU:深入解析LLaMA为何选择门控激活函数
  • Open Harmony 高端精致:layered-image 分层图标资源配置实践
  • 如何通过智能线程调度提升CPU性能:CPUDoc完整使用教程
  • 终极游戏存档备份指南:使用Ludusavi保护你的游戏进度
  • WorkBuddy如何链接GitHub自动操作仓库
  • 5分钟搞定AI视频剪辑:FunClip智能工具让创作零门槛
  • 从零构建企业级RAG智能问答系统:FastAPI工程化落地全攻略
  • 零代码创作:用Mi-Create打造你的专属小米手表表盘
  • 2026企业级GEO优化排名监测系统排行,多维度对比解析选型实战指南
  • 前列腺癌医学影像AI诊断:Kaggle冠军方案解析
  • 塞瑞替尼治疗期间血糖飙升?高血糖不良反应的防控要点
  • 经典算法实例:有效的回旋镖
  • 基于 eBPF + io_uring 的高性能用户态 TCP 存储引擎设计
  • 规则即代码——用 Rules 让 AI 自动遵守团队规范
  • 猫抓浏览器扩展:视频资源嗅探与下载的终极解决方案
  • 无线安全实战:利用Wifite自动化破解WEP加密网络
  • Selenium相关习题
  • 卷疯了!这款 macOS 神器一个顶五个:截图 + 录屏 + 取色 + 贴图 + 右键增强,还完全免费开源
  • 3分钟快速解密:RPG Maker MV资源提取工具让游戏素材轻松解锁
  • FreeRTOS源码详解(六)—— 任务切换
  • 天辛大师漫谈AI时代的境界修养,文科生的持续学习
  • 别让AI每天从零开始:一个研发老兵的Skills沉淀实操指南
  • 【Netty源码解读和权威指南】第81篇:Netty Codec框架源码解析——编解码器是如何设计的