一、冒泡排序

介绍:

顾名思义,冒泡排序由第一个元素与相邻元素比拟大小,如果后面的元素值大则替换地位,直到一波循环后最初一个元素最大。再从第二元素开始与相邻元素进行比拟,以此类推。

/** * 冒泡排序 * @param {array} arr  */function bubbleSort(arr) {  for (let i = 0; i < arr.length; i++) {    for (let index = 0; index < arr.length - i - 1; index++) {      const nextIndex = index + 1;      if (arr[index] > arr[nextIndex]) {        // 两个比拟的元素调换地位        arr[index] = arr.splice(nextIndex, 1, arr[index])[0];      }    }  }  return arr;}

二、抉择排序

介绍:

[5, 3, 2, 6, 10, 9],最外层一共比拟5次,因为最初剩下的一个元素必然在最初。

/** * 抉择排序 * @param {array} arr  */function selectSort(arr) {  for (let i = 0; i < arr.length - 1; i++) {    // 假如以后元素值最小    let minIndex = i;    let minVal = arr[minIndex];    for (let index = i + 1; index < arr.length; index++) {      const currentVal = arr[index];      // 比拟元素值大小,定义最小元素的下标和值      if (arr[index] < arr[minIndex]) {        minIndex = index;      }    }    // 替换以后轮训的下标与最小值下标的元素值    arr[i] = arr.splice(minIndex, 1, arr[i])[0];  }  return arr;}