带你读《图解算法小抄》十四、排序(4)

简介: 带你读《图解算法小抄》十四、排序(4)

带你读《图解算法小抄》十四、排序(3)https://developer.aliyun.com/article/1348147?groupCode=tech_library


2选择排序优化

这是基本的选择排序算法实现。接下来,我将介绍一种优化方法,称为“双向选择排序”。

双向选择排序是对传统选择排序的一种改进,它通过同时寻找未排序序列中的最大和最小元素,然后分别将它们放到已排序序列的两端,从而减少了一半的比较次数。

 

function bidirectionalSelectionSort(arr) {
  let left = 0;
  let right = arr.length - 1;
  while (left < right) {
    let minIndex = left;
    let maxIndex = right;
    for (let i = left; i <= right; i++) {
      if (arr[i] < arr[minIndex]) {
        minIndex = i;
      }
      if (arr[i] > arr[maxIndex]) {
        maxIndex = i;
      }
    }
    if (minIndex !== left) {
      [arr[left], arr[minIndex]] = [arr[minIndex], arr[left]];
    }
    if (maxIndex === left) {
      // 如果最大元素移到了最小元素的位置,更新最大元素的索引
      maxIndex = minIndex;
    }
    if (maxIndex !== right) {
      [arr[right], arr[maxIndex]] = [arr[maxIndex], arr[right]];
    }
    left++;
    right--;
  }
  return arr;
}
// 示例用法:const array = [64, 25, 12, 22, 11];const sortedArray = bidirectionalSelectionSort(array);
console.log(sortedArray); // 输出:[11, 12, 22, 25, 64]

 

双向选择排序的优化使得每一轮循环可以同时找到最大和最小元素,从而减少了比较次数。这样,在大型数据集上,它的性能优于传统的选择排序算法。

3复杂度

名称

最佳情况

平均情况

最坏情况

内存

稳定性

备注

选择排序

n^2

n^2

n^2

1

 

 

4参考资料

维基百科


带你读《图解算法小抄》十四、排序(5)https://developer.aliyun.com/article/1348145?groupCode=tech_library

相关文章
|
2月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
165 5
|
2月前
|
机器学习/深度学习 运维 算法
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
241 0
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
|
3月前
|
机器学习/深度学习 算法 安全
【无人机3D路径规划】基于非支配排序遗传算法NSGAII的无人机3D路径规划研究(Matlab代码实现)
【无人机3D路径规划】基于非支配排序遗传算法NSGAII的无人机3D路径规划研究(Matlab代码实现)
209 1
|
2月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
142 0
|
2月前
|
机器学习/深度学习 算法 安全
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)
100 0
|
3月前
|
机器学习/深度学习 算法 安全
【优化调度】基于matlab非支配排序遗传算法求解车辆充电调度优化问题研究(Matlab代码实现)
【优化调度】基于matlab非支配排序遗传算法求解车辆充电调度优化问题研究(Matlab代码实现)
113 0
|
2月前
|
存储 算法 搜索推荐
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
专攻软考高频算法,深度解析二分查找、堆排序、快速排序核心技巧,对比九大排序算法,配套动画与真题,7天掌握45%分值模块。
145 1
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
|
2月前
|
供应链 算法 Java
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
115 1
|
2月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鱼鹰优化算法NSOOA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鱼鹰优化算法NSOOA求解无人机三维路径规划研究(Matlab代码实现)
|
3月前
|
传感器 并行计算 算法
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
262 3

热门文章

最新文章