实现的办法各种各样,就抉择自个能懂得形式去实现(就集体而言)
<!--
* @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>