原理思路:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
function selectionSort(arr) {
var len = arr.length;
var minIndex, temp;
for (var i = 0; i < len - 1; i++) {
minIndex = i;
for (var j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) { // 寻找最小的数
minIndex = j; // 将最小数的索引保存
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
这是本人写的,原理是一样的:
let arr = [1,5,2,8,3,14,64,23,84];
let resIndex = 0;
let resArr = []; //每次选择最小值放到此新数组
while(arr.length >0){
let min = arr[0];
for(let i=0; i<arr.length; i++){ //寻找数组最小值
if(arr[i] <= min){
min = arr[i];
resIndex = i;
}
}
resArr.push(min);
arr.splice(resIndex,1) //剔除已选择的元素
}
console.log(resArr); //输出: [1, 2, 3, 5, 8, 14, 23, 64, 84]