选择排序的效率

比较次数O(N2) 交换次数是O(N)

补充

补充:选择排序(Selection Sort)每轮从未排序区选出最小(或最大)的元素,放到已排序区的末尾。比较次数固定为 n(n-1)/2,即 O(n²);交换次数为 O(n),比冒泡排序交换次数少。是不稳定排序(因为交换可能打乱相等元素的相对顺序),原地操作。

function selectionSort(arr) {
  const n = arr.length;
  for (let i = 0; i < n - 1; i++) {
    let minIdx = i;
    for (let j = i + 1; j < n; j++) {
      if (arr[j] < arr[minIdx]) minIdx = j;
    }
    if (minIdx !== i) [arr[i], arr[minIdx]] = [arr[minIdx], arr[i]];
  }
  return arr;
}

来源整理自:我的有道云笔记