美文网首页
排序算法2-选择排序

排序算法2-选择排序

作者: 小杰66 | 来源:发表于2021-04-16 07:57 被阅读0次

选择排序

  • 平均时间复杂度:O(n^2)
  • 最好情况:O(n^2)
  • 最坏情况:O(n^2)
  • 空间复杂度:O(1)
  • 排序方式:In-place
  • 稳定性:不稳定

算法步骤:
1.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2.再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3.重复第二步,直到所有元素均排序完毕。

function selectionSort(arr) {
  let len = arr.length;
  let minV, temp;
  for (let i = 0; i < len - 1; i++) {
    minV = i;
    for (let j = i + 1; j < len; j++) {
      if (arr[j] < arr[minV]) {
        minV = j;
      }
    }
    temp = arr[minV];
    arr[minV] = arr[i];
    arr[i] = temp;
  }
}

改进
优化1 每次找出最小值的同时找出最大值

function selectionSort(arr) {
  let left = 0,
    right = arr.length - 1;
  let minV, maxV, temp;
  while (left < right) {
    minV = left;
    maxV = right;
    for (let j = left + 1; j < right; j++) {
      if (arr[j] < arr[minV]) {
        minV = j;
      }
      if (arr[j] > arr[maxV]) {
        maxV = j;
      }
    }
    temp = arr[minV];
    arr[minV] = arr[left];
    arr[left] = temp;
    left++;

    temp = arr[maxV];
    arr[maxV] = arr[right];
    arr[right] = temp;
    right--;
  }
}

相关文章

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 算法踩坑6-二叉搜索树排序

    背景 接上面五篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 ...

  • 算法踩坑5-归并排序

    背景 接上面四篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 来...

  • 排序算法2-选择排序

    选择排序 平均时间复杂度:O(n^2) 最好情况:O(n^2) 最坏情况:O(n^2) 空间复杂度:O(1) 排序...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

  • PHP常用算法

    基于选择的排序算法 常见的基于选择的排序算法有:冒泡排序、插入排序、选择排序、归并排序和快速排序,我们在选在排序算...

  • 算法and数据结构

    算法 冒泡排序 选择排序 计数排序

  • 基础排序算法总结

    排序算法分为内部排序和外部排序,而我们经常说的基础排序算法,都是内部排序算法。包括冒泡排序,选择排序,插入排序,快...

  • LeetCode大全

    1.常见排序算法: 常见的排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、...

网友评论

      本文标题:排序算法2-选择排序

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