2.2.14 #
解答 #
比较两个有序队列的第一个元素,取较小的一个出队并放入额外建立的队列中。
重复上述步骤直到两个队列都为空。
代码 #
// 归并两个有序队列。输入队列将被清空。
static Queue<T> Merge<T>(Queue<T> a, Queue<T> b) where T : IComparable<T>
{
var sortedQueue = new Queue<T>();
while (!a.IsEmpty() && !b.IsEmpty())
{
if (a.Peek().CompareTo(b.Peek()) < 0)
sortedQueue.Enqueue(a.Dequeue());
else
sortedQueue.Enqueue(b.Dequeue());
}
while (!a.IsEmpty())
sortedQueue.Enqueue(a.Dequeue());
while (!b.IsEmpty())
sortedQueue.Enqueue(b.Dequeue());
return sortedQueue;
}