新闻中心

c++ sort函数怎么用 c++ sort排序算法实例

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

c++ sort函数怎么用 c++ sort排序算法实例

在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岁少女! 

搜索