递归快速排序,打印数组和数组长度的问题

 var arr = new Array(1000);
        for (var i = 0; i < 1000; i++) {
            arr[i] = (Math.round(Math.random() * 1000));
        }
        // let arr = [0, 1, 0]
        const quick = (arr) => {
            if (arr.length <= 1) {
                return arr;
            } else {
                let index = Math.floor(arr.length / 2);
                let len = arr.splice(index, 1);
                let left = [];
                let right = [];

                for (let i = 0; i < arr.length; i++) {
                    if (arr[i] < len) {
                        left.push(arr[i]);
                    } else {
                        right.push(arr[i]);
                    }
                }
                return quick(left).concat(len, quick(right));


            }



        }



        console.log(quick(arr));
        console.log(quick(arr).length);

输出结果是image.png
为什么console.log(quick(arr).length)不是1000呢?

阅读 1.4k
1 个回答

let len = arr.splice(index, 1);这里使用了splice,是删除arr中的一个元素,元素的长度就从1000变成999了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题