1
头图

实现的方法各种各样,就选择自个能懂得方式去实现(就个人而言)

<!--
<!--
 * @Author: [you name]
 * @Date: 2021-10-27 09:01:06
 * @LastEditors: [you name]
 * @LastEditTime: 2021-10-27 19:38:36
 * @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]));
       //输出的是一个对象  所以要转类型  变成字符串再转成数组(确实有点繁琐且拉胯哈,别笑我)
        let arr = quickSort([22, 11, 23, 8, 7, 2, 99]).toString()
        console.log(typeof arr, arr);  //string 2,7,8,11,22,23,99
        // 字符串转换成数组
        let newArr = arr.split(",")
        console.log(typeof newArr, newArr);  //object (7) ['2', '7', '8', '11', '22', '23', '99']

        let dataStrArr = []
        // array.forEach(function(currentValue, index, arr))  
        //currentValue:当前元素      index:当前元素的索引值。    arr:当前元素所属的数组对象。
        newArr.forEach(function (value, index, arr) {
            //+ 号是隐式转换,把字符串转换成Number类型
            dataStrArr.push(+value);
        });
        console.log(dataStrArr);  //[2, 7, 8, 11, 22, 23, 99]

      
      
    </script>
</head>

<body>

</body>

</html>

云绮棠兮
48 声望10 粉丝

当野心追赶不上才华,便静下心来努力