请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

报错 RangeError: Maximum call stack size exceeded

回答1 浏览107 2020-10-12 07:14:59
Array.prototype.quickSort = function () {
    const rec = (arr) => {
        if (arr.length === 1) { return arr; }
        const left = [];
        const right = [];
        const mid = arr[0];
        for (let i = 1; i < arr.length; i += 1) {
            if (arr[i] < mid) {
                left.push(arr[i]);
            } else {
                right.push(arr[i]);
            }
        }
        return [...rec(left), mid, ...rec(right)];
    };
    const res = rec(this);
    res.forEach((n, i) => { this[i] = n });
};

// const arr = [2, 4, 5, 3, 1];
const arr = [34, 17, 77, 11, 56, 56, 9, 66, 31, 77];
arr.quickSort();
console.log(arr); 

运行后输出 RangeError: Maximum call stack size exceeded

添加回答

1回答

JavaScript版数据结构与算法 轻松解决前端算法面试

难度中级
时长15小时
人数814
好评度99.4%

夯实算法基础,填补技术短板,助力面试考题最后一公里

讲师

lewis Web前端工程师

曾就职于奇虎360、中科院计算所,现任BAT资深工程师,在React、Node.js、人工智能等领域具有丰富的开发经验。讲课深入浅出、旁征博引,极具个人风格。

意见反馈 帮助中心 APP下载
官方微信