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

【c++STL常见排序算法sort,merge,random_shuffle,reverse】

文章目录

      • C++ STL 常见排序算法详解
        • 1. `sort` 算法
        • 2. `merge` 算法
        • 3. `random_shuffle` 算法
        • 4. `reverse` 算法

C++ STL 常见排序算法详解

1. sort 算法
  • 功能sort 用于对容器内的元素进行升序排序。
  • 示例代码
    #include <iostream>
    #include <algorithm>
    #include <vector>int main() {std::vector<int> numbers = {4, 2, 7, 1, 5};std::sort(numbers.begin(), numbers.end());for (int num : numbers) {std::cout << num << " ";}return 0;
    }
    
  • 原理sort 基于快速排序算法实现,具有 O(n log n) 的时间复杂度。
2. merge 算法
  • 功能merge 用于合并两个已排序的序列到一个新序列。
  • 示例代码
    #include <iostream>
    #include <algorithm>
    #include <vector>int main() {std::vector<int> list1 = {1, 3, 5};std::vector<int> list2 = {2, 4, 6};std::vector<int> mergedList(list1.size() + list2.size());std::merge(list1.begin(), list1.end(), list2.begin(), list2.end(), mergedList.begin());for (int num : mergedList) {std::cout << num << " ";}return 0;
    }
    
  • 原理merge 通过合并两个有序序列来创建一个新的有序序列,具有线性时间复杂度。
3. random_shuffle 算法
  • 功能random_shuffle 用于随机打乱容器中元素的顺序。
  • 示例代码
    #include <iostream>
    #include <algorithm>
    #include <vector>int main() {std::vector<int> numbers = {1, 2, 3, 4, 5};std::random_shuffle(numbers.begin(), numbers.end());for (int num : numbers) {std::cout << num << " ";}return 0;
    }
    
  • 原理random_shuffle 使用随机数生成器对容器中的元素进行重新排列。
4. reverse 算法
  • 功能reverse 用于反转容器中元素的顺序。
  • 示例代码
    #include <iostream>
    #include <algorithm>
    #include <vector>int main() {std::vector<int> numbers = {1, 2, 3, 4, 5};std::reverse(numbers.begin(), numbers.end());for (int num : numbers) {std::cout << num << " ";}return 0;
    }
    
  • 原理reverse 将容器中的元素逆序排列。
http://www.lryc.cn/news/234263.html

相关文章:

  • STM32/N32G455国民科技芯片驱动DS1302时钟---笔记
  • 基于PLC的污水厌氧处理控制系统(论文+源码)
  • Unity之NetCode多人网络游戏联机对战教程(9)--NetworkAnimator组件
  • iceoryx之Roudi
  • .Net(C#)常用转换byte转uint32、byte转float等
  • windows快捷方式图标变成空白
  • 【Linux系统编程十九】:(进程通信)--匿名管道/模拟实现进程池
  • 【全网首发】2023年NOIP真题
  • 【Linux网络】从原理到实操,感受PXE无人值守自动化高效批量网络安装系统
  • Pandas+Matplotlib 数据分析
  • k8s ingress高级用法一
  • C语言--从键盘输入10个数字放在数组中,并输出
  • SSL加密
  • 一个美观且功能丰富的 .NET 控制台应用程序开源库
  • DispatcherSynchronizationContext and Dispatcher
  • java类型属性set方法无法被赋值
  • 【2】SM2验签工具和RSA验签工具
  • Python (十一) 迭代器与生成器
  • 通过maven命令手动上传jar私服Nexus
  • 记一次用jlink调试正常,不进入调试就不能运行的情况
  • 搞科研、写论文,如何正确使用GPT?AIGC技术解析、提示词工程高级技巧、AI绘图、ChatGPT/GPT4应用
  • Java实现的插件化策略模式
  • 【jvm】MinorGC、MajorGC和FullGC
  • Redis:java和SpringBoot中使用Redis
  • Java的XWPFTemplate word生成列表
  • 基于RFID的自动化仓储设备研发项目可行性研究报告
  • ajax异步传值以及后端接收参数的几种方式
  • 千年TGS服务器日志报错如何解决
  • 读取Json BugFix
  • 【Gradle构件工具深度学习】