思想
每次循环选取一个最小的数字放到前面的有序序列中。
选择排序从数组的开头开始,将第一个元素和其他元素比较,检查完所有元素后,最小的元素会被放到数组的第一个位置,然后算法会从第二个数寻找。这个过程一直寻找,当进行到数组倒数第二个位置时,所有的数据便完成了排序。
解法
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
2
3
4
5
6
7
8
9
10
11
12
复杂度
时间复杂度:O(n2)
空间复杂度:O(1)
稳定性
稳定