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

sort排序

在 C++ 中,std::sort 是标准模板库(STL)中提供的一个非常高效的排序算法。它通常用于对容器中的元素进行排序,比如数组或 std::vectorstd::sort 默认按照升序排序,但你也可以通过提供自定义的比较函数或函数对象来实现降序或其他复杂排序逻辑。

基本用法

#include <iostream>
#include <vector>
#include <algorithm> // 包含 std::sort

int main() {
    std::vector<int> numbers = {5, 2, 9, 1, 5, 6};

    // 默认升序排序
    std::sort(numbers.begin(), numbers.end());

    // 输出排序后的结果
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}


输出

1 2 5 5 6 9

降序排序

要实现降序排序,你可以使用 std::greater<int>() 作为第三个参数,或者使用自定义的比较函数。

使用 std::greater
 
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> numbers = {5, 2, 9, 1, 5, 6};

    // 降序排序
    std::sort(numbers.begin(), numbers.end(), std::greater<int>());

    // 输出排序后的结果
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}


自定义比较函数

你也可以定义一个自定义的比较函数:

#include <iostream>
#include <vector>
#include <algorithm>

bool compareDescending(int a, int b) {
    return a > b; // 如果 a 大于 b,则 a 排在 b 前面
}

int main() {
    std::vector<int> numbers = {5, 2, 9, 1, 5, 6};

    // 使用自定义比较函数进行降序排序
    std::sort(numbers.begin(), numbers.end(), compareDescending);

    // 输出排序后的结果
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}


注意事项

  1. 范围std::sort 的第一个和第二个参数是指定要排序的范围,通常是容器的 begin() 和 end() 迭代器。
  2. 稳定性std::sort 不保证稳定性,即对于相等的元素,排序后它们的相对顺序可能改变。如果需要稳定排序,可以使用 std::stable_sort
  3. 复杂度std::sort 的平均时间复杂度为 O(N log N),其中 N 是要排序的元素数量。

通过这些示例,你可以根据需求灵活使用 std::sort 对数据进行排序。

相关文章:

  • 使用Python进行数据挖掘时如何有效的数据脱敏?
  • 资源单元(RU)分配和映射
  • 【JavaScript】十一、DOM对象的获取和修改
  • 多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测
  • 05-02-自考数据结构(20331)- 动态查找-知识点
  • 离线知识库文档问答用唤醒+VOSK离线听写+DS-V2-16B+离线合成轻松高效实现
  • Rocky Linux 9.5中完美迁移mysql5.6.17到mysql5.7.11
  • 20250330-傅里叶级数专题之离散时间傅里叶变换(4/6)
  • js 强引用 ​弱引用
  • leetcode 28 Find the Index of the First Occurrence in a String
  • uv vs pip 速度实测
  • ENSP学习day12
  • aws(学习笔记第三十七课) lambda调用rekognition(名人视频分析)
  • PHY——LAN8720A 寄存器读写 (二)
  • 前向扩散公式推导细节
  • Matlab自学笔记四十九:类型识别:判断数据的类型和类别
  • 2025/3/20 心得
  • HCIA—— 31 HTTP的报文、请求响应报文、方法、URI和URL
  • 【数据标准】数据标准化框架体系-基础类数据标准
  • 基于Real-Sim-Real循环框架的机器人策略迁移方法
  • wordpress阿里秀模板/搜狗排名优化工具
  • 中国十大购物网站/内蒙古seo
  • wordpress 浮动定位/西青seo
  • 一般用什么语言做网站/百度推广代理商利润
  • 网站可以建几个人/市场调研的方法
  • 南头专业英文网站建设公司/推广软文平台