快速排序 function quickSort (array) { // 就一个元素排什么序啊 if (array.length <= 1) return array // 找基准,默认第一个元素 let m = array[0] // 比基准小放左边 let l = [] // 比基准大放右边 let r = [] // 遍历数组,从第二个元素开始因为第一个元素已经拿出来了 for (let i = 1; i < array.length; i++) { if (array[i] < m) { // 比基准小放左边 l.push(array[i]) } else {// 比基准大放右边,相等的随便放哪一边,这里放右边 r.push(array[i]) } } return [...quickSort(l), m, ...quickSort(r)] // 各个数组排好序合在一起 } 冒泡排序 function bubbleSort (array) { // 就一个元素排什么序啊 if (array.length <= 1) return array // 两重循环,相邻的元素比较大小交换位置,循环完就排好了 for (let i = 0; i < array.length; i++) { for (let j = 0; j < array.length; j++) { if (array[j] > array[j + 1]) { // 交换位置(可以用解构赋值) let temp = array[j + 1] array[j + 1] = array[j] array[j] = temp } } } return array } 选择排序 function choiceSort (array) { // 就一个元素排什么序啊 if (array.length <= 1) return array // 两重循环,当前元素与后面的元素相比较,找出比当前元素小且最小的交换位置 for (let i = 0; i < array.length; i++) { // 最小元素索引初始化 let minIndex = i // 在当前元素后面找 for (let j = i + 1; j < array.length; j++) { // 比最小元素还小记录索引 if (array[j] < array[minIndex]) { minIndex = j } } // 循环完交换位置(可以用解构赋值) let temp = array[i] // 当前元素与比其小的交换 array[i] = array[minIndex] array[minIndex] = temp } return array }