如何在不使用其他数据结构的情况下输出2个队列的排序数量?

时间:2016-05-06 16:43:01

标签: java sorting

我不知道这是否可行,但是:

假设我们有2个队列:queue1和queue2,每个队列包括从最低到最大排序的(自然)数字(queue1.head()和queue2.head()返回queue1 / queue2的最小值)。

如何在不使用其他数据结构的情况下以排序(从最低到最高)的顺序输出queue1和queue2中包含的数字?

2 个答案:

答案 0 :(得分:3)

像这样:

while (!queue1.isEmpty() || !queue2.isEmpty()) {
     if (queue1.isEmpty()) {
         System.out.println(queue2.remove());
     } else if (queue2.isEmpty()) {
         System.out.println(queue1.remove());
     } else if (queue1.peek() < queue2.peek()) {
         System.out.println(queue1.remove());
     } else {
         System.out.println(queue2.remove());
     }
}

首先你需要在其中一个队列为空时接受这种情况,然后从其他队列输出。然后你偷看两者并比较它们并采取最小的。这样做直到两个队列都为空。

答案 1 :(得分:0)

如果您不介意将内容添加到第一个队列:

queue1.addAll(queue2);
queue1.stream().sorted(Integer::compare).forEach(System.out::println);
相关问题