我正在尝试使用递归对整数队列进行排序。我很确定我理解这件事的逻辑。但我一定错过了我的代码,因为它不能正常工作。它只适用于只有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);
}
}
答案 0 :(得分:0)
<强>更新强> 正如@Jeffrey Bosboom指出的那样,这可能是一种合并类型。
当你对part1和part2进行排序时,你看起来没有保存结果。所以改成它:
part1 = sort(part1);
part2 = sort(part2);
这就是为什么它只适用于2个数字的队列,因为这两个半数是基本情况。
我假设你的mergeSortedQueues函数是正确的,但是这里没有显示,所以这可能是另一个错误来源。