思想

每次循环选取一个最小的数字放到前面的有序序列中。

选择排序从数组的开头开始,将第一个元素和其他元素比较,检查完所有元素后,最小的元素会被放到数组的第一个位置,然后算法会从第二个数寻找。这个过程一直寻找,当进行到数组倒数第二个位置时,所有的数据便完成了排序。

解法

function selectionSort(arr){
    for( var i = 0 ; i  < arr.length -1 ; i ++ ){
        var minIndex = i;
        for(var j = i + 1; j < arr.length; j ++){
            if(arr[minIndex] > arr[j]){
                minIndex = j;
            }
        }
        [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
    }
    return arr;
}
1
2
3
4
5
6
7
8
9
10
11
12

复杂度

时间复杂度:O(n2)

空间复杂度:O(1)

稳定性

稳定