1.概念
选择排序是最简单直观的一种算法,基本思想为第一次从待排序的中数据元素选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到所有元素排完为止。
选择排序算法是一种不稳定排序算法,当出现相同元素的时候有可能会改变相同元素的顺序
2.算法原理
比如我们有如下原始数组:[3,2,1,6,4,7]
:
第一轮:
首先假设最小元素是第一个元素:3
第1步:比较3和2,3<2,最小为2
第2步:比较2和1,2<1,最小为1
第3-6步:确定最下值为1。
接着将1和数组第1个元素交换。
第二至五轮结果如下:
至此所有的元素都是有序的
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
}
}