, Volume 22, Issue 2, pp 171-186

An algorithm for merging meaps

Rent the article at a discount

Rent now

* Final gross prices may vary according to local VAT.

Get Access

Summary

We present an algorithm to merge priority queues organized as heaps. The worst case number of comparisons required to merge two heaps of sizes k and n is O(log(n)*log(k)). The algorithm requires O(k) +log(n)*log (k)) data movements if heaps are implemented using arrays and O(log(n)*log(k)) for a pointer-based implementation. Previous algorithms require either O(n+k) data movements and comparisons, or O(k*log(log(n+k))) comparisons and O(k*log(n+k)) data movements. The algorithm presented in this paper improves on the previous algorithms for the case when k>log(n).

This work was done while the authors were at McGill University, Montréal, Canada