Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Mergeable heap

From Wikipedia, the free encyclopedia

In computer science, a mergeable heap (also called a meldable heap) is an abstract data type, which is a heap supporting a merge operation.

Definition

[edit]

A mergeable heap supports the usual heap operations:[1]

  • Make-Heap(), create an empty heap.
  • Insert(H,x), insert an element x into the heap H.
  • Min(H), return the minimum element, or Nil if no such element exists.
  • Extract-Min(H), extract and return the minimum element, or Nil if no such element exists.

And one more that distinguishes it:[1]

  • Merge(H1,H2), combine the elements of H1 and H2 into a single heap.

Trivial implementation

[edit]

It is straightforward to implement a mergeable heap given a simple heap:

Merge(H1,H2):

  1. x Extract-Min(H2)
  2. while x ≠ Nil
    1. Insert(H1, x)
    2. x Extract-Min(H2)

This can however be wasteful as each Extract-Min(H) and Insert(H,x) typically have to maintain the heap property.

More efficient implementations

[edit]

Examples of mergeable heap data structures include:

A more complete list with performance comparisons can be found at Heap (data structure) § Comparison of theoretic bounds for variants.

In most mergeable heap structures, merging is the fundamental operation on which others are based. Insertion is implemented by merging a new single-element heap with the existing heap. Deletion is implemented by merging the children of the deleted node.

See also

[edit]

References

[edit]
  1. 1 2 Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009) [1990]. Introduction to Algorithms (3rd ed.). MIT Press and McGraw-Hill. pp. 505–506. ISBN 0-262-03384-4.