思路:
每次从数组中选出最小的那一个元素,排在最前面。
本质与冒泡排序很像,只有具体实现的区别,冒泡策略是“交换两个数”,所以位置上的数会因交换而不断变化;选择排序每次是要找到最小元素的位置,最后进行一次交换,把最小的放到当前的位置。
时间复杂度:O(n^2)
空间复杂度:O(1)
var array = [5,4,6,3,7,1];
function selectionSort(array) {
for(var i=0;i<array.length-1;i++){ // start sort
var min = array[i]; // pick the current element as mininal number
var minindex = i; // pick current index as minimal number's index
for(j=i+1;j<array.length;j++){ // only compare with the later elements
if(array[j]<min){
min = array[j]; // record the smaller number
minindex = j; // record the smaller number's index
}
}
array[minindex] = array[i]; // switch
array[i] = min; // switch
}
return array;
}
console.log(selectionSort(array));