选择排序
lkj 4/8/2022 排序
# 分析
一次选择排序,可以将某个区间的最小值排列到该区域的第一位,具体的方式是:
- 找出该区域的最小值
- 将该值与该区域第一个值交换
- 对下一个区域重复上述过程,直到排序完成
# 代码
/**
* 首先找到数组中最小的那个元素,其次,将它和数组的第一个元素交换(如果第一个元素就是最小元素那么它就和自己交换)
* 再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,将整个数组排序。
* 这种方法就叫选择排序
*/
function selectSort(arr) {
let len = arr.length;
for (let i = 0; i < len - 1; i++) {
let min = i;//记录最小值的索引
for (let j = i; j < len; j++) {
if(arr[j] <= arr[min]){
// 找到最小值,更新最小值索引
min = j;
}
}
// 已找到当前区间的最小值索引 min
swap(arr, min, i);
}
}
// 交换数组指定位置的值
function swap(arr, i, j){
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}