美文网首页让前端飞程序员饥人谷技术博客
每天一点算法-简单选择排序 (Day7)

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

作者: 岛民小强 | 来源:发表于2019-01-04 22:59 被阅读2次

介绍

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

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

还是以这组被我用各种算法玩的待排序数为例(升序, 粗体字为已排序数;标红字为需互换数):[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)

感谢阅读!欢迎关注!持续更新中...

相关文章

  • 排序算法(四)选择排序

    排序算法(四)选择排序 1.算法思路  选择排序(Selection-Sort)是一种简单直观的排序算法。它的工作...

  • 常用排序算法总结

    一、选择排序 选择排序示意图 选择排序(Selection sort)也是一种简单直观的排序算法。 算法步骤: 1...

  • 选择排序算法

    一、选择排序算法 选择排序(Selection sort)是一种简单直观的排序算法。 二、算法思想 每一次从待排序...

  • 选择排序算法

    选择排序(Selection Sort)算法也是比较简单的排序算法,其思路比较直观。选择排序算法在每一步中选取最小...

  • python实现选择排序(SelectionSort)

    python实现【选择排序】 算法原理及介绍 选择排序(Selection-sort)是一种简单直观的排序算法。它...

  • 基础算法|简单选择排序

    简单选择排序是一种排序算法,指在简单选择排序过程中,所需移动记录的次数比较少。简单选择排序是不稳定排序。 简单选择...

  • 基本排序算法

    冒泡算法 简单选择排序 堆排序 快排 归并排序

  • 算法很难?三分钟带你掌握经典算法「选择排序」

    一、选择排序介绍 选择排序(Selection sort)是一种简单直观的排序算法。 二、算法思想 第 1 趟 从...

  • 排序算法

    常见排序算法及JAVA实现 简单选择排序(SelectSort) 选择排序思想很简单,对所有元素进行遍历,选出最小...

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

    介绍 今天给大家介绍选择排序算法中的——简单选择排序,该排序算法很容易理解,一句话表述: 每一次遍历找到最小的数和...

网友评论

    本文标题:每天一点算法-简单选择排序 (Day7)

    本文链接:https://www.haomeiwen.com/subject/larlrqtx.html