Why do we need a heap when we already have a sorted array?
A heap allows fast insertion and deletion of the smallest or largest element, while a sorted array requires shifting many elements, making these operations slow.
Click to reveal answer
beginner
What is the main inefficiency of a sorted array when adding new elements?
Inserting a new element in a sorted array requires shifting elements to keep order, which takes time proportional to the array size (O(n)).
Click to reveal answer
intermediate
How does a heap improve the efficiency of finding the smallest or largest element compared to an unsorted array?
A heap keeps the smallest or largest element at the root, so it can be found in constant time (O(1)), unlike an unsorted array which requires scanning all elements (O(n)).
Click to reveal answer
intermediate
What operations are faster in a heap compared to a sorted array?
Insertion and deletion of the root element are faster in a heap (O(log n)) compared to a sorted array (O(n)) because heaps maintain partial order and use tree structure.
Click to reveal answer
intermediate
Explain why a heap is a better choice for a priority queue than a sorted array.
A heap allows quick access to the highest priority element and efficient updates (insertions and deletions) without re-sorting the entire structure, unlike a sorted array.
Click to reveal answer
What is the time complexity to insert an element into a sorted array while keeping it sorted?
AO(1)
BO(n)
CO(log n)
DO(n log n)
✗ Incorrect
Insertion requires shifting elements to maintain order, which takes O(n) time.
What is the time complexity to find the smallest element in a min-heap?
AO(n)
BO(log n)
CO(1)
DO(n log n)
✗ Incorrect
The smallest element is always at the root of a min-heap, so it can be accessed in O(1) time.
Which data structure allows faster deletion of the smallest element?
ALinked list
BSorted array
CUnsorted array
DHeap
✗ Incorrect
Heap deletion of the root (smallest element) takes O(log n), while sorted array deletion requires shifting elements, taking O(n).
Why is a heap preferred over a sorted array for implementing a priority queue?
AHeaps allow faster insertion and deletion
BHeaps use less memory
CSorted arrays are unordered
DHeaps are easier to implement
✗ Incorrect
Heaps allow insertion and deletion in O(log n), while sorted arrays require O(n) for these operations.
What is the main disadvantage of using a sorted array for dynamic data?
ASlow insertion and deletion
BCannot store duplicates
CUses too much memory
DSlow search
✗ Incorrect
Insertion and deletion require shifting elements, which is slow (O(n)) in sorted arrays.
Explain why heaps exist and what problems they solve that sorted arrays cannot handle efficiently.
Think about how adding or removing elements affects sorted arrays versus heaps.
You got /4 concepts.
Describe the main differences in performance between heaps and sorted arrays for insertion and deletion operations.
Focus on how elements are moved or reordered in each data structure.
You got /4 concepts.
Practice
(1/5)
1. Why do we use a heap instead of just a sorted array for priority queue operations?
easy
A. Because heaps allow faster insertion and deletion of the highest priority element
B. Because heaps store elements in sorted order permanently
C. Because heaps use less memory than arrays
D. Because heaps do not require any comparisons
Solution
Step 1: Understand insertion and deletion in sorted arrays
Inserting or deleting an element in a sorted array requires shifting elements, which takes O(n) time.
Step 2: Compare with heap operations
Heaps allow insertion and deletion of the highest priority element in O(log n) time by maintaining a partial order.
Final Answer:
Because heaps allow faster insertion and deletion of the highest priority element -> Option A
Quick Check:
Heap operations faster than sorted array insert/delete [OK]
Hint: Heaps speed up insert/delete compared to sorted arrays [OK]
Common Mistakes:
Thinking heaps keep all elements fully sorted
Assuming heaps use less memory than arrays
Believing heaps avoid comparisons
2. Which of the following is the correct way to insert an element into a max heap stored as an array in C?
easy
A. Insert element in sorted position directly
B. Add element at the beginning, then bubble down to restore heap property
C. Add element at the end, then bubble up to restore heap property
D. Replace root and then sort entire array
Solution
Step 1: Recall max heap insertion process
New element is added at the end of the array to maintain complete tree shape.
Step 2: Restore heap property by bubbling up
Compare new element with parent and swap if larger, repeat until heap property is restored.
Final Answer:
Add element at the end, then bubble up to restore heap property -> Option C
Quick Check:
Insert by adding end + bubble up [OK]
Hint: Insert at end, then bubble up to fix heap [OK]
Common Mistakes:
Inserting at the beginning instead of the end
Trying to insert in sorted order directly
Sorting entire array after insertion
3. What is the output of the following C code snippet that uses a min heap to insert elements 5, 3, 8, then extracts the minimum?
#include
#include
// Assume heap functions insert() and extractMin() are correctly implemented
int main() {
int heap[10];
int size = 0;
insert(heap, &size, 5);
insert(heap, &size, 3);
insert(heap, &size, 8);
int min = extractMin(heap, &size);
printf("%d\n", min);
return 0;
}
medium
A. 3
B. 5
C. 8
D. Runtime error
Solution
Step 1: Insert elements into min heap
Insert 5, then 3 (bubbles up to root), then 8 (placed as leaf).
Step 2: Extract minimum element
Minimum is root, which is 3 after insertions. Extracting returns 3.
Final Answer:
3 -> Option A
Quick Check:
Min heap extractMin returns smallest inserted value [OK]
Hint: Min heap extract returns smallest inserted element [OK]
Common Mistakes:
Assuming extractMin returns first inserted element
Confusing min heap with max heap
Expecting output 5 or 8 instead of 3
4. The following code tries to insert elements into a max heap but does not maintain the heap property correctly. What is the bug?
void insert(int heap[], int *size, int val) {
heap[*size] = val;
(*size)++;
int i = *size - 1;
while (i > 0 && heap[i] < heap[(i - 1) / 2]) {
int temp = heap[i];
heap[i] = heap[(i - 1) / 2];
heap[(i - 1) / 2] = temp;
i = (i - 1) / 2;
}
}
medium
A. The size pointer is not incremented correctly
B. The comparison should be heap[i] > heap[parent] for max heap
C. The swap logic is incorrect
D. The loop condition should be i >= 0
Solution
Step 1: Analyze the comparison in the while loop
The code uses heap[i] < heap[parent], which is correct for min heap but wrong for max heap.
Step 2: Correct comparison for max heap
For max heap, we must bubble up when child is greater than parent, so condition should be heap[i] > heap[parent].
Final Answer:
The comparison should be heap[i] > heap[parent] for max heap -> Option B
Quick Check:
Max heap bubbles up when child > parent [OK]
Hint: Max heap bubble up uses > comparison, not < [OK]
Common Mistakes:
Using min heap comparison in max heap code
Not incrementing size pointer
Incorrect swap logic assumptions
5. You have a large dataset that needs frequent insertions and deletions of the highest priority element. Why is a heap preferred over a sorted array for this use case?
hard
A. Because sorted arrays use more memory than heaps
B. Because heaps keep data fully sorted at all times
C. Because heaps do not require any reordering after insertion
D. Because heaps provide O(log n) insertion and deletion, while sorted arrays require O(n)
Solution
Step 1: Analyze insertion and deletion costs in sorted arrays
Sorted arrays require shifting elements to insert or delete, costing O(n) time.
Step 2: Analyze heap operation costs
Heaps maintain partial order and allow insertions and deletions in O(log n) time by bubbling up or down.
Step 3: Compare efficiency for frequent operations
For frequent insert/delete, heaps are more efficient due to lower time complexity.
Final Answer:
Because heaps provide O(log n) insertion and deletion, while sorted arrays require O(n) -> Option D
Quick Check:
Heap O(log n) beats sorted array O(n) for insert/delete [OK]