每天一点算法-简单选择排序-(Day7)

简介: 每天一点算法-简单选择排序-(Day7)

介绍

今天给大家介绍选择排序算法中的——简单选择排序,该排序算法很容易理解,一句话表述:

每一次遍历找到最小的数和最前面的待排序数互换位置,直到所有数都已排序。

还是以这组被我用各种算法玩的待排序数为例(升序, 粗体字为已排序数;标红字为需互换数):[77, 6, 37, 96, 34, 6, 14]

遍历 数组情况 解释
1 [77, 6, 37, 96, 34, 6, 14] 第1次遍历后发现6是最小的,和第1个待排序数77互换
2 [6, 77, 37, 96, 34, 6, 14] 第2次遍历后发现6是最小的,和第1个待排序数77互换
3 [6, 6, 37, 96, 34, 77, 14] 第3次遍历后发现14是最小的,和第1个待排序数37互换
4 [6, 6, 14, 96, 34, 77, 37] 第4次遍历后发现34是最小的,和第1个待排序数96互换
5 [6, 6, 14, 34, 96, 77, 37] 第5次遍历后发现37是最小的,和第1个待排序数96互换
6 [6, 6, 14, 34, 37, 96, 77] 第6次遍历后发现77是最小的,和第1个待排序数96互换
- [6, 6, 14, 34, 37, 77, 96] 排序完成

例子

js实现如下(升序):

function sort(arr) {
  for(let i = 0; i < arr.length; i++){
      let minIndex = i;
      for(let j = i + 1; j < arr.length; j++){
          if(arr[j] < arr[minIndex]){
              minIndex = j;
          }
      }
      [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]]; //解构互换位置
  }
  return arr;
}
sort([77, 6, 37, 96, 34, 6, 14]); // =>[6, 6, 14, 34, 37, 77, 96]

时间复杂度

遍历次数的计算与冒泡排序类似n-1 + n-2 + … + 2 + 1 = n * (n-1) / 2 = 0.5 * n ^ 2 - 0.5 * n,所以时间复杂度为O(n^2)

感谢阅读!欢迎关注!持续更新中...
相关文章
|
4月前
|
搜索推荐 算法 C语言
C语言选择排序算法,从入门到精通只需1秒!
C语言选择排序算法,从入门到精通只需1秒!
|
1月前
|
搜索推荐 算法 Java
经典排序算法之-----选择排序(Java实现)
这篇文章通过Java代码示例详细解释了选择排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过选择排序对数组进行升序排列。
经典排序算法之-----选择排序(Java实现)
|
3月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
3月前
|
搜索推荐
排序算法---选择排序-----详解&&代码
排序算法---选择排序-----详解&&代码
|
3月前
|
算法 搜索推荐
数据结构与算法-选择排序
数据结构与算法-选择排序
27 4
|
3月前
|
搜索推荐 算法
【C/排序算法】:堆排序和选择排序
【C/排序算法】:堆排序和选择排序
25 0
|
3月前
|
算法 搜索推荐 Java
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
27 0
|
3月前
|
存储 算法 C语言
数据结构和算法——堆排序(选择排序、思路图解、代码、时间复杂度、堆排序及代码)
数据结构和算法——堆排序(选择排序、思路图解、代码、时间复杂度、堆排序及代码)
29 0
|
4月前
|
存储 算法 搜索推荐
【数据结构与算法】:选择排序与快速排序
欢迎来到排序的第二个部分:选择排序与快速排序!
【数据结构与算法】:选择排序与快速排序
|
4月前
|
机器学习/深度学习 搜索推荐 算法
【排序算法】插入排序与选择排序详解
【排序算法】插入排序与选择排序详解