A general technique for implementation of efficient priority queues

This paper presents a very general technique for the implementation of mergeable priority queues. The amortized running time is O(log n) for DELETEMIN and DELETE, and /spl Theta/(1) for all other standard operations. In particular, the operation DECREASEKEY runs in amortized constant time. The worst-case running time is O(log n) or better for all operations. Several examples of mergeable priority queues are given. The examples include priority queues that are particular well suited for external storage. The space requirement is only two pointers and one information field per item. The technique is also used to implement mergeable, double-ended priority queues. For these queues, the worst-case time bound for insertion is /spl Theta/(1), which improves the best previously known bound. For the other operations, the time bounds are the same as the best previously known bounds, worst-case as well as amortized.<<ETX>>