选择排序
- 思路:不断遍历数组,将最小的往前放
- 第一遍:从i=0 遍历数组,找到最小的,放在i=0的位置
- 第二遍:从i=1 遍历数组,找到最小的,放在i=1 的位置
- ……
- 重复上述过程,直到比较到最后一位停止
- 返回排序好的数组
选择排序的实现
- 测试多次,排序一个长度为10000的数组,时间平均为 0.215s,比冒泡排序快
/**
* 1.从i=0遍历数组,将最小值放在i=0位置
* 2.从i=1遍历数组,将最小值放在i=2位置
* ...
* 4.重复上述过程,直到i=nums.length-2
*/
function selectSort(nums) {
// 设置一个起始最小的索引值
let indexMin;
// 中间临时变量
let temp;
for (let i = 0; i < nums.length - 2; i++) {
indexMin = i;
for (let j = i; j < nums.length - i; j++) {
if (nums[indexMin] > nums[j]) {
indexMin = j;
}
}
if (indexMin !== i) {
temp = nums[i];
nums[i] = nums[indexMin];
nums[indexMin] = temp;
}
}
return nums;
}
// let arr = [5, 4, 3, 2, 1];
// console.log(selectSort(arr));
function createArr(n) {
let arr = [];
for (let i = n; i > 0; i--) {
arr.push(i);
}
return arr;
}
let arr = createArr(10000);
console.log(selectSort(arr));