十大排序算法之选择排序

110 阅读1分钟

image.png

选择排序(Selection Sort)是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。

算法步骤

  • 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置
  • 然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾
  • 以此类推,重复第二步,直到全部待排序的数据元素的个数为零。 selectionSort.gif

复杂度

标题数据
平均时间复杂度O(n²)
最好情况O(n²)
最坏情况O(n²)
空间复杂度O(1)
排序方式In-place
稳定性不稳定

代码演示

    function selectionSort(list) {
    let len = list.length;
    if (len <= 1) return list; //长度小于等于一,不用排序
    for (let i = 0; i < len - 1; i++) {
        let minIndex = i; //设置i为最小值的下标
        for (let j = i + 1; j < len; j++) {
            if (list[j] < list[minIndex]) {
                minIndex = j //i和后边的进行比对,符合条件,更新minIndex
            }
        }
        //如果不相等,两个值交换,小的放在前面
        if (i !== minIndex)[list[minIndex], list[i]] = [list[i], list[minIndex]]
    }
    return list
}

image.png