请问对于快速排序来说,在递归时是否需要加入if(arr.length ===0) return arr; 我在本地测试的时候出现了对空数组的无限递归

来源:11-6 JavaScript 实现:快速排序

weixin_慕盖茨5300854

2020-07-02

Array.prototype.quickSort = function () {
    const rec = (arr) => {
	    //对空数组进行检验
        if (arr.length === 0) return arr
        if (arr.length === 1) return arr
        const small = []
        const big = []
        const mid = arr[0]
        for (let i = 1; i < arr.length; i++) {
            if (arr[i] < mid) {
                small.push(arr[i])
            } else {
                big.push(arr[i])
            }
        }
        return [...rec(small), mid, ...rec(big)]

    }
    const res = rec(this)
    res.forEach((item, index) => this[index] = item)
}
写回答

1回答

lewis

2020-07-02

需要加的。

1
1
见信
刚才看的时候,我就在想了,平时老师举得例子都是[5,4,3,2,1,]这种,如果用这个case,右半区就会果断出现[],然后无限递归,一来问答区看,果然有人在问
2021-02-24
共1条回复

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

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

2479 学习 · 683 问题

查看课程