如何使用递归对java中的队列进行排序?

时间:2016-03-12 04:16:16

标签: java sorting recursion queue

我正在尝试使用递归对整数队列进行排序。我很确定我理解这件事的逻辑。但我一定错过了我的代码,因为它不能正常工作。它只适用于只有2个数字的简单队列,除此之外的任何东西,它只是不起作用。谁能告诉我我错过了什么?提前谢谢!

public Queue<Integer> sort(Queue<Integer> queue) {
    Queue<Integer> cloneQueue = new Queue<Integer>(queue);
    //creating a copy of the original queue

    if (cloneQueue.size()<=1){
        return q;
        //base case
    }else{
        Queue<Integer> part1 = new Queue<Integer>();
        Queue<Integer> part2 = new Queue<Integer>();

        splitQueues(cloneQueue,part1,part2);
        //split the queue in half and put them in part1 and part2

        sort(part1);
        sort(part2);
        //recursion calls

        return mergeSortedQueues(div1,div2);
    }
}

1 个答案:

答案 0 :(得分:0)

<强>更新 正如@Jeffrey Bosboom指出的那样,这可能是一种合并类型。

当你对part1和part2进行排序时,你看起来没有保存结果。所以改成它:

    part1 = sort(part1);
    part2 = sort(part2);

这就是为什么它只适用于2个数字的队列,因为这两个半数是基本情况。

我假设你的mergeSortedQueues函数是正确的,但是这里没有显示,所以这可能是另一个错误来源。