Min Heap vs Max Heap When to Use Which in DSA Typescript - Complexity Comparison
We want to understand how fast operations run in Min Heaps and Max Heaps.
Which heap type is better depends on what we want to do with the data.
Analyze the time complexity of inserting and removing elements in heaps.
class Heap {
heap: number[] = [];
insert(value: number) {
this.heap.push(value);
this.bubbleUp();
}
bubbleUp() {
let index = this.heap.length - 1;
while (index > 0) {
let parentIndex = Math.floor((index - 1) / 2);
if (this.compare(this.heap[index], this.heap[parentIndex])) {
[this.heap[index], this.heap[parentIndex]] = [this.heap[parentIndex], this.heap[index]];
index = parentIndex;
} else {
break;
}
}
}
compare(a: number, b: number): boolean {
// For Min Heap: return a < b;
// For Max Heap: return a > b;
return a < b;
}
}
This code shows how insertion works in a heap, using bubble up to keep order.
Look at the bubbleUp method which moves the new element up the tree.
- Primary operation: Comparing and swapping elements up the heap.
- How many times: Up to the height of the heap, which grows with the number of elements.
Each insert moves up the tree, which is about the height of the heap.
| Input Size (n) | Approx. Operations (bubbleUp steps) |
|---|---|
| 10 | About 4 steps |
| 100 | About 7 steps |
| 1000 | About 10 steps |
Pattern observation: The steps grow slowly as the heap grows, because height grows with log of n.
Time Complexity: O(log n)
This means inserting or removing elements takes time that grows slowly with the number of elements.
[X] Wrong: "Heaps always take linear time to insert or remove because they reorder many elements."
[OK] Correct: Actually, heaps only reorder along one path from leaf to root, which is much shorter than the whole heap.
Knowing when to use Min or Max Heap and their time costs helps you pick the right tool for fast data retrieval in real problems.
"What if we changed the heap to a balanced binary search tree? How would the time complexity for insertions compare?"