一、冒泡排序
介绍:
顾名思义,冒泡排序由第一个元素与相邻元素比拟大小,如果后面的元素值大则替换地位,直到一波循环后最初一个元素最大。再从第二元素开始与相邻元素进行比拟,以此类推。
/** * 冒泡排序 * @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;}