fezaoduke / fe-practice-hard

晚练课

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

第 87 期(算法-排序):经典排序算法之选择排序

wingmeng opened this issue · comments

选择排序

选择排序(Selection sort)是一种简单直观的排序算法。

  • 原理: 从待排序的元素中选出最大或最小的元素放到已排序好的元素后面。
  • 复杂度: 时间复杂度:O(n²),空间复杂度:O(1)
  • 稳定性: 选择排序是不稳定的排序算法。

selectionSort

function selectionSort(arr) {
  var len = arr.length;
  var minIndex, temp;

  for (var i = 0; i < len - 1; i++) {
    minIndex = i;

    for (var j = i + 1; j < len; j++) {
      if (arr[j] < arr[minIndex]) {  // 寻找最小的数
        minIndex = j;  // 将最小数的索引保存
      }
    }

    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }

  return arr;
}