网站建设的新闻动态长沙网站制作
一 概述
       双向选择排序(又称鸡尾酒选择排序)是选择排序的优化版本,核心改进在于每轮遍历同时确定未排序部分的最小值和最大值,分别交换到序列两端,从而减少遍历轮数。
二 时间复杂度
时间复杂度为(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
   
