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

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

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


4复杂度

名称

最佳情况

平均情况

最坏情况

内存

稳定性

备注

冒泡排序

n

n2

n2

1

 

5参考资料

  • 维基百科
  • YouTube

2.选择排序


选择排序(Selection Sort)是一种排序算法,具体来说是一种原地比较排序算法。它的时间复杂度是 O(n^2),在大型列表上效率低下,并且通常比类似的插入排序表现更差。选择排序以其简单性而闻名,在某些情况下,特别是在辅助内存有限的情况下,它在性能上优于更复杂的算法。

 

1选择排序流程

选择排序是一种简单直观的排序算法,它的主要思想是在未排序序列中找到最小(或最大)的元素,然后将其放到已排序序列的末尾。以下是选择排序的步骤:

 

创建一个函数 selectionSort,它接受一个数组作为参数。

selectionSort 函数内部,使用一个循环遍历未排序序列的所有元素,记为 i,并假设当前元素为最小值。

在循环中,再嵌套一个循环用于找到未排序序列中的最小元素的索引,从 i+1 到数组末尾。记最小元素索引为 minIndex

如果 minIndex 不等于 i,则交换 i minIndex 处的元素,将当前最小元素放到已排序序列的末尾。

循环结束后,数组将按升序排列。

 

function selectionSort(arr) {
  const len = arr.length;
  for (let i = 0; i < len - 1; i++) {
    let minIndex = i;
    for (let j = i + 1; j < len; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    if (minIndex !== i) {
      [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
    }
  }
  return arr;
}
// 示例用法:const array = [64, 25, 12, 22, 11];const sortedArray = selectionSort(array);
console.log(sortedArray); // 输出:[11, 12, 22, 25, 64]

 

image.png

selection_sort

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

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

热门文章

最新文章