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

发布于 2022-09-12 23:32:12 字数 1024 浏览 13 评论 0

 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呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七月上 2022-09-19 23:32:12

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文