gpt4 book ai didi

java - 按特定顺序合并两个队列的方法

转载 作者:行者123 更新时间:2023-12-01 15:56:44 25 4
gpt4 key购买 nike

private ArrayQueue<E> merge( ArrayQueue<E> q1, ArrayQueue<E> q2 ) throws ArrayQueueException 
{
ArrayQueue<E> mergeQueue = new ArrayQueue<E>( q1.size() + q2.size() );

ArrayQueue<E> smallestQueue = smallestQueue( q1, q2 );
ArrayQueue<E> biggestQueue = biggestQueue( q1, q2 );

for ( int index = 0; index < smallestQueue.size(); index++ )
{
E elementOne = smallestQueue.dequeue();
E elementTwo = biggestQueue.dequeue();

if ( elementOne.compareTo( elementTwo ) < 0 )
{
mergeQueue.enqueue( elementOne );
mergeQueue.enqueue( elementTwo );
}
else
{
mergeQueue.enqueue( elementTwo );
mergeQueue.enqueue( elementOne );
}
}

for ( int index = 0; index < biggestQueue.size(); index++ )
{
mergeQueue.enqueue( biggestQueue.dequeue() );
}

return ( mergeQueue );
}

我一直在尝试一项练习,其中涉及创建一种合并两个队列的方法。当两个队列大小相同时,我的上述尝试有效,但否则是错误的。

实现这一点的最佳方法是什么?

谢谢。

最佳答案

这不是您的方法的唯一问题。

正确方法的伪代码如下所示:

while (both queues are not empty) {
retrieve first elements without removing them from their queues
compare them
put the appropriate element into the new queue and remove it from its old queue
}

if any of old queues is not empty, put its elements into the new queue

关于java - 按特定顺序合并两个队列的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4914201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com