为什么这个Javascript quicksort方法只返回一个数组中的一个字符

时间:2018-03-18 01:47:52

标签: javascript arrays quicksort

var arr = [4, 5, 6, 3, 4, 5, 2, 5, 6, 4, 2,];

function quickSort(arra) {
    if (arra.length <= 1) {
        return arra;
    }
    else {
        var len    = arra.length;
        var left   = [];
        var right  = [];
        var temp   = arra.pop();
        var newarr = [];

        for (var i = 1; i < len; i++) {
            if (arra[i] < temp) {
                left.push(arra[i]);
            }
            else { right.push[i]; }
        }
    }
    return newarr.concat(quickSort(left), temp, quickSort(right));
}

console.log(quickSort(arr))

结果是:

Console image showing output

我想知道为什么这个方法只返回数组中的一个字符?

1 个答案:

答案 0 :(得分:0)

pop()方法从数组中移除最后一个元素(因此长度减少1),第一个元素的索引为0,因此您需要用

替换for循环
for (var i = 0; i < len-1; i++) {

您还需要更改right.push [i],如评论

中所述