十大排序算法(JavaScript实现 )- 选择排序 Selection Sort

257 阅读2分钟
  1. 十大排序算法(JavaScript实现 )- 冒泡排序 Bubble Sort

  2. 十大排序算法(JavaScript实现 )- 选择排序 Selection Sort

  3. 十大排序算法(JavaScript实现 )- 插入排序 Insertion Sort

  4. 十大排序算法(JavaScript实现 )- 希尔排序 Shell Sort

  5. 十大排序算法(JavaScript实现 )- 快速排序 Quick Sort

  6. 十大排序算法(JavaScript实现 )- 归并排序  Merge Sort

  7. 十大排序算法(JavaScript实现 )- 计数排序 Count Sort

  8. 十大排序算法(JavaScript实现 )- 桶排序 Bucket Sort

  9. 十大排序算法(JavaScript实现 )- 基数排序 Radix Sort

  10. 十大排序算法(JavaScript实现 )- 堆排序 Heap Sort

1.概念

选择排序是最简单直观的一种算法,基本思想为第一次从待排序的中数据元素选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到所有元素排完为止。

选择排序算法是一种不稳定排序算法,当出现相同元素的时候有可能会改变相同元素的顺序

2.算法原理

比如我们有如下原始数组:[3,2,1,6,4,7]

图片.png

第一轮: 首先假设最小元素是第一个元素:3
第1步:比较3和2,3<2,最小为2
第2步:比较2和1,2<1,最小为1
第3-6步:确定最下值为1。
接着将1和数组第1个元素交换。

图片.png

第二至五轮结果如下:

图片.png

至此所有的元素都是有序的

3.算法代码

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