选择排序

4/8/2022 排序

# 分析

一次选择排序,可以将某个区间的最小值排列到该区域的第一位,具体的方式是:

  1. 找出该区域的最小值
  2. 将该值与该区域第一个值交换
  3. 对下一个区域重复上述过程,直到排序完成

# 代码

/**
 * 首先找到数组中最小的那个元素,其次,将它和数组的第一个元素交换(如果第一个元素就是最小元素那么它就和自己交换)
 * 再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,将整个数组排序。
 * 这种方法就叫选择排序
 */
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;
}
Last Updated: 4/8/2022, 7:03:16 PM