选择排序
选择排序是一种交换排序。核心思想是每轮选出最小值的索引,然后交换。选择排序不是一个稳定排序(如果有相同元素排序后元素的位置不变),但它是原地排序(不需要额外的空间),平均时间复杂度O(n2),空间复杂度O(1)。
代码实现
使用双循环来进行排序。外部循环控制所有的回合,内部循环从外循环处开始遍历,比较当前内循环的值与当前最小值,找出下一个最小值。 每轮最小值默认为外循环的值。
function selectionSort(array) {
for (let i = 0; i < array.length; i++) {
// 默认最小值是当前外循环的值
let minIndex = i;
// 内循环从外循环当前值开始循环,因为i前面的都已经有序
for (let j = i; j < array.length; j++) {
// 找出最小值
minIndex = array[minIndex] < array[j] ? minIndex : j;
}
// 交换
const temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
const array = [3, 4, 2, 1, 5, 6, 7, 8, 30, 50, 1, 33, 24, 5, -4, 7, 0];
selectionSort(array);
console.log(array);