当前位置: 首页 > 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
 

相关文章:

  • qt作业day5
  • 进程相关知识day1
  • 【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题(已解决)
  • 时间序列预测实操
  • better-sqlite3之exec方法
  • hom_mat2d_to_affine_par 的c#实现
  • django中序列化器serializer 的高级使用和需要注意的点
  • Unity中Stack<T>用法以及删除Stack<GameObject>的方法
  • WordPress开发到底是开发什么?
  • 在 Aspire 项目下使用 AgileConfig
  • Python学习第十天
  • 数据库复习(第五版)- 第六章 关系数据理论
  • 阿里云MaxCompute面试题汇总及参考答案
  • Electron-Forge + Vue3 项目初始化
  • 010---基于Verilog HDL的分频器设计
  • 二阶RC+PWM实现DDS
  • 风控模型算法面试题集结
  • Python可视化——地理空间型图表(自用)
  • 2025年Q1起重机指挥证理论考试题库
  • Vue Hooks 深度解析:从原理到实践
  • 抖音运营/seo教程之关键词是什么
  • 如何做网站充值接口/刷粉网站推广马上刷
  • 域名和网站空间相互做解析/优化网站打开速度
  • 网站建设的参考文献/系统优化软件有哪些
  • WordPress整站搬家插件/中文搜索引擎有哪些平台
  • 做网站的挣钱么/seo怎么优化简述