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





![linux上安装redis[从0到1]](https://i-blog.csdnimg.cn/direct/442852e0be9b43eea963a6af1024e965.png)










![P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 or Set--lower_bound()的解法!!!](https://i-blog.csdnimg.cn/direct/cf6ebdba35b842f4ae734789dffedd18.png)


