排序算法-选择排序

106 阅读1分钟

选择排序

选择排序是一种交换排序。核心思想是每轮选出最小值的索引,然后交换。选择排序不是一个稳定排序(如果有相同元素排序后元素的位置不变),但它是原地排序(不需要额外的空间),平均时间复杂度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);

参考

选择排序