快速排序算法中的无限循环

时间:2013-11-18 06:58:49

标签: javascript quicksort

我想知道为什么我在递归快速排序算法中遇到无限循环  当我尝试运行return语句return (quicksort(less).concat([swapPos], quicksort(more))时,它进入一个无限循环。

http://jsbin.com/uMAmIXA/1/edit

var quicksort = function (array) {
    //base case

    if (array.length <= 1) {
        return array;
    }

    var pivot = Math.floor(((array.length - 1) / 2));
    console.log(pivot);
    var swapPos = array[pivot];
    console.log(swapPos);
    var less = [];
    var more = [];

    array = array.slice(0, swapPos).concat(array.slice(swapPos + 1));
    // console.log(array);
    for (i = 0; i < array.length; i++)
    {
        if (array[i] < swapPos) {
            less.push(array[i]);
        } 
        else {
            more.push(array[i]);
        }
    }
    //console.log(more);
    //  console.log(less);
    // return (quicksort(less).concat([swapPos], quicksort(more)));
};

quicksort([19, 12, 44, 2, 1, 7, 85, 22, 5, 4, 3]);

1 个答案:

答案 0 :(得分:2)

array = array.slice(0,swapPos).concat(array.slice(swapPos+1));

我认为这应该是支点而不是swapPos。另外,我认为你应该交换他们的名字。