Reading — step 1 of 5
Read
~1 min readApplications
Putting It All Together
Heaps are EVERYWHERE:
- Priority queues: OS schedulers, event simulation, network packet queues
- Graph algorithms: Dijkstra, Prim's MST, A*
- Compression: Huffman tree construction
- Top-K: stream analytics, search ranking
- Heapsort: in-place O(n log n) sort
- Median finding: two heaps (max + min)
Beyond binary heaps:
- d-ary heaps: each node has d children. Better for decrease-key heavy use (Dijkstra).
- Fibonacci heap: amortized O(1) decrease-key. Theoretical interest; bad constants.
- Pairing heap: simpler than Fibonacci, similar bounds in practice.
- Skew heap / Leftist heap: meld two heaps in O(log n).
- Soft heap: relaxes the property to enable corruption — used in MST algorithms.
- Treap: random-priority BST that's effectively a heap.
For 99% of real code, a plain binary heap is what you want. Python's heapq, Java's PriorityQueue, C++'s std::priority_queue — all binary heaps.
Discussion
Ask a question, share an insight, or help someone who’s stuck.
Sign in to post a comment or reply.
Loading…