实现的办法各种各样,就抉择自个能懂得形式去实现(就集体而言)
<!-- * @Author: [you name] * @Date: 2021-10-27 09:01:06 * @LastEditors: [you name] * @LastEditTime: 2021-10-27 09:59:12 * @Description: --><!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> let quickSort = (arr) => { //如果数组元素小于等于一个 间接输入arr if (arr.length <= 1) { return arr } //获取数组两头元素的索引下标值 如果是浮点数就向下取整 var num = Math.floor(arr.length / 2) //利用splice(index,number) 找到数组两头元素 删除 splice()返回数组的已删除的元素也就是两头元素 var numValue = arr.splice(num, 1) //申明分区数组 右边的元素left全副比两头元素numValue小 左边的元素right全副比两头元素numValue大 var left = [] var right = [] //利用循环将满足条件的数组元素别离放进左右分区数组 for (var i = 0; i < arr.length; i++) { if (arr[i] < numValue) { //全副比两头元素numValue小 left.push(arr[i]) } else { //全副比两头元素numValue大 right.push(arr[i]) } } //递归 右边的分组递归输入 连贯两头的元素以及左边的递归分组 return quickSort(left).concat([numValue], quickSort(right)) } // alert(quickSort([22,11,23,8,7,2,99])); //输入的是一个对象 所以要转类型 变成字符串 console.log(quickSort([22, 11, 23, 8, 7, 2, 99]).toString()); </script></head><body></body></html>