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

双向选择排序算法

一 概述
      双向选择排序(又称鸡尾酒选择排序)是选择排序的优化版本,核心改进在于每轮遍历同时确定未排序部分的最小值和最大值,分别交换到序列两端,从而减少遍历轮数。

二 时间复杂度

      时间复杂度为(O(n^2)),但实际比较次数约为标准选择排序的 (1/2)。

三  C++实现代码
 #include <iostream>
#include <algorithm> // 用于swap函数

void bidirectionalSelectionSort(int arr[], int n) {
    int left = 0, right = n - 1;
    
    while (left < right) {
        int min_idx = left, max_idx = right;
        
        // 遍历未排序区间[left, right],寻找最小值和最大值
        for (int i = left; i <= right; i++) {
            if (arr[i] < arr[min_idx]) min_idx = i;
            if (arr[i] > arr[max_idx]) max_idx = i;
        }
        
        // 将最小值交换到左端
        std::swap(arr[left], arr[min_idx]);
        
        // 若最大值原本在left位置,需更新max_idx
 

http://www.lryc.cn/news/547740.html

相关文章:

  • Node.js setImmediate 教程
  • MyBatis @Param 注解详解:多参数传递与正确使用方式
  • Spring实战spring-ai运行
  • STL:C++的超级工具箱(一)
  • leetcode349 两个数组的交集
  • 快速生成viso流程图图片形式
  • 鸿蒙Android4个脚有脚线
  • 【NetTopologySuite类库】geojson和shp互转,和自定义对象互转
  • 【哇! C++】类和对象(三) - 构造函数和析构函数
  • Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(一)
  • 浅谈汽车系统电压优缺点分析
  • Springboot基础篇(4):自动配置原理
  • Dify 开源大语言模型应用开发平台使用(一)
  • 机器学习深度学习基本概念:logistic regression和softmax
  • OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()
  • Git - 补充工作中常用的一些命令
  • 使用Python的requests库调用API并处理JSON响应的详细步骤
  • Mybatis如何通过databaseId属性支持不同数据库的不同语法
  • android edittext 防止输入多个小数点或负号
  • windows部署spleeter 版本2.4.0:分离音频的人声和背景音乐
  • 深度学习、宽度学习、持续学习与终身学习:全面解析与其在大模型方面的应用
  • 【量化科普】Arbitrage,套利
  • 删除已加入 .gitignore却仍被git追踪的文件
  • pytest框架 核心知识的系统复习
  • Spring Cloud Alibaba学习 5- Seata入门使用
  • WebAssembly技术及应用了解
  • Deepseek中的MoE架构的改造:动态可变参数激活的MoE混合专家架构(DVPA-MoE)的考虑
  • NodeJS学习笔记
  • 【交通网络拓扑图实现原理深度解析】
  • 【极客时间】浏览器工作原理与实践-2 宏观视角下的浏览器 (6讲) - 2.6 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?