新闻中心
c++ sort函数怎么用 c++ sort排序算法实例
C++中sort函数定义在头文件中,使用IntroSort算法实现高效排序。1. 可对数组或vector等容器排序,采用左闭右开区间;2. 默认升序,支持通过greater()实现降序;3. 支持自定义比较函数或lambda表达式,如按绝对值、个位数或结构体成员排序;4. 结构体排序时可结合const引用提高效率。掌握其三个参数即可灵活应用。

在C++中,sort函数是标准模板库(STL)中的一个非常实用的排序工具,定义在头文件 gorithm> 中。它可以对数组、vector等容器中的元素进行高效排序,默认使用快速排序+堆排序+插入排序的混合算法(IntroSort),时间复杂度通常为 O(n log n)。
基本语法
std::sort(起始地址, 结束地址);
注意:结束地址是不包含的,即左闭右开区间 [first, last)。
对数组排序
对普通数组进行升序排序:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[] = {5, 2, 8, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
// 输出:1 2 5 8 9
return 0;
}
对vector排序
vector 是更常用的动态数组,用法类似:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> vec = {3, 7, 2, 5, 1};
sort(vec.begin(), vec.end());
for (int x : vec) {
cout << x << " ";
}
// 输出:1 2 3 5 7
return 0;
}
降序排序
可以通过添加第三个参数改变排序规则,例如使用 greater() 实现降序:
网易人工智能
网易数帆多媒体智能生产力平台
233
查看详情
sort(vec.begin(), vec.end(), greater<int>()); // 排序后:7 5 3 2 1
自定义排序规则
如果想按特定逻辑排序,比如按绝对值大小,可以传入自定义比较函数或 lambda 表达式:
vector<int> nums = {-3, 1, -5, 2, 4};
// 按绝对值从小到大排序
sort(nums.begin(), nums.end(), [](int a, int b) {
return abs(a) < abs(b);
});
// 结果:1, 2, -3, 4, -5
也可以写成函数形式:
bool cmp(int a, int b) {
return a % 10 < b % 10; // 按个位数排序
}
sort(arr, arr + n, cmp);
结构体排序示例
常用于根据结构体某个字段排序:
struct Student {
string name;
int score;
};
vector<Student> students = {{"Alice", 85}, {"Bob", 90}, {"Charlie", 78}};
// 按分数从高到低排序
sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
return a.score > b.score;
});
基本上就这些。掌握 sort 函数的关键是理解它的三个参数:起始、结束、比较规则。配合 lambda 使用,灵活又高效。实际编程中几乎不用手写排序算法,直接调用 sort 就行。注意别忘了包含 头文件。
以上就是c++++ sort函数怎么用 c++ sort排序算法实例的详细内容,更多请关注其它相关文章!
# 工具
# go
# 网站优化有什么用途
# 重庆网站建设怎么操作
# 上海头条营销推广
# 营销推广战略模板图片
# 建设机械网站哪家好
# 外贸网站建设博客
# 禹城市seo网站推广
# seo站长邮箱反查
# 江门seo公司地址电话
# 山东官方seo优化
# 多路
# 管理机制
# 如何实现
# 何为
# 降序
# 头文件
# 升序
# 都是
# 自定义
# 网易
# 排序算法
# stream
# ios
# c++
# ai
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法
响应式图片在网页设计中的正确实现方法
mc.js游戏直达 mc.js网页免下载版本秒进地址
荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程
ACG动漫视频网入口 ACG动漫*免费正版观看地址
win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】
Django表单提交验证失败后保持字段值不刷新
在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验
AngularJS $http POST请求数据传递与Go后端接收实践
Surface怎么安装系统 微软Surface Pro U盘重装win11教程
CSS布局中意外空白:解决padding-top导致的顶部间距问题
Python中如何避免重复条件判断:利用数据结构实现动态逻辑
邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧
Typer应用中动态命令行参数的解析与处理
小红书网页版入口链接分享 小红书官网直接进
Python多线程中正确使用sigwait处理SIGALRM信号
千牛数据看板网页版_千牛数据看板网页版访问方法
小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
拼多多赚钱渠道_拼多多收益来源
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
QQ邮箱官方登录入口_QQ邮箱网页版快捷使用平台
手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析
J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题
快手赚钱渠道_快手收益来源
126邮箱网页版官方入口 126邮箱账号在线登录平台
在Go Martini框架中高效服务动态生成图像的实践指南
J*a最大堆Heapify方法修复:索引计算与边界条件深度解析
AO3同人作品网入口 AO3搜索引擎官网永久地址
移动端XML文件怎么转换成Excel 手机和平板上的解决方案
J*a里如何使用forEach遍历Map_Map遍历方法说明
钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法
邮政快递单号查询入口 邮政快递物流信息在线查询入口
百度网盘网页版入口 百度网盘网页版官方登录网址
J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析
MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理
Win11输入法不见了怎么办_Windows11恢复语言栏显示方法
Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换
学习通在线学习平台 学习通网页版直接进入课程中心
快速CSGO开箱网站指南 CSGO开箱平台推荐
HTML空白字符处理机制:渲染、DOM与编码实践
vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法
在Pyomo中实现基于变量的条件约束:Big-M方法详解
cad如何更改注释性对象的比例_cad注释性比例调整方法
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
C++如何生成随机数_C++ random库使用方法与范围设置
《铁拳8》黑皮辣妹新实机:元气满满的18岁少女!


2025-12-01
浏览次数:次
返回列表
return 0;
}