📖 Scenario: Imagine you are managing a priority queue for tasks where the highest priority task should always come first. You will build a simple max-heap to keep tasks ordered by their priority.
🎯 Goal: You will create a max-heap represented as a list, add a new task priority to it, and then perform the bubble up operation to keep the heap property intact.
📋 What You'll Learn
Create a list called heap with initial values representing a max-heap
Create an integer variable called newPriority with the value to insert
Write code to insert newPriority at the end of heap and perform bubble up to restore max-heap order
Print the final state of heap after insertion and bubble up
💡 Why This Matters
🌍 Real World
Priority queues are used in task scheduling, network routing, and event simulation where the highest priority item must be processed first.
💼 Career
Understanding heap operations is important for software engineers working on performance-critical applications, algorithms, and data processing.
Progress0 / 4 steps
1
Create the initial max-heap list
Create a list of integers called heap with these exact values: 100, 50, 30, 20, 40, 10
DSA C#
Hint
Use List<int> and initialize it with the given values inside curly braces.
2
Add the new priority value
Create an integer variable called newPriority and set it to 60
DSA C#
Hint
Use int newPriority = 60; to create the variable.
3
Insert and bubble up the new priority
Add newPriority to the end of heap. Then write a while loop to bubble up the new value until the max-heap property is restored. Use variables index and parentIndex to track positions. Swap values if the new value is greater than its parent.
DSA C#
Hint
Remember to add the new value to the list first. Then use a while loop to compare the new value with its parent and swap if needed.
4
Print the heap after insertion and bubble up
Print the contents of heap as a single line with values separated by spaces using Console.WriteLine and string.Join.
DSA C#
Hint
Use Console.WriteLine(string.Join(" ", heap)); to print all values separated by spaces.
Practice
(1/5)
1. What is the main purpose of the bubble up operation during a heap insert?
easy
A. To restore the heap property by moving the new element up if it is smaller than its parent
B. To move the new element to the bottom of the heap
C. To remove the smallest element from the heap
D. To sort all elements in the heap
Solution
Step 1: Understand heap property
In a min-heap, every parent node is smaller than its children. When inserting, this property might break.
Step 2: Purpose of bubble up
The bubble up operation moves the newly inserted element up the tree if it is smaller than its parent, restoring the heap property.
Final Answer:
To restore the heap property by moving the new element up if it is smaller than its parent -> Option A
Quick Check:
Bubble up fixes heap order by moving smaller elements up [OK]
Hint: Bubble up moves smaller inserted element up to fix heap [OK]
Common Mistakes:
Thinking bubble up moves element down
Confusing bubble up with removing elements
Assuming bubble up sorts the entire heap
2. Which of the following C# code snippets correctly swaps two elements in an array during bubble up?
easy
A. int temp = heap[parent]; heap[parent] = heap[i]; heap[i] = temp;
B. heap[i] = heap[parent]; heap[parent] = heap[i];
C. heap[i] = heap[parent]; heap[parent] = heap[parent];
D. int temp = heap[i]; heap[i] = heap[parent]; heap[parent] = heap[i];
Solution
Step 1: Understand swapping logic
To swap two elements, store one in a temporary variable, assign the second to the first, then assign temp to the second.
Step 2: Check each option
int temp = heap[parent]; heap[parent] = heap[i]; heap[i] = temp; correctly stores heap[parent] in temp, then swaps heap[parent] and heap[i]. int temp = heap[i]; heap[i] = heap[parent]; heap[parent] = heap[i]; swaps incorrectly by storing heap[i] first.
Final Answer:
int temp = heap[parent]; heap[parent] = heap[i]; heap[i] = temp; -> Option A
Quick Check:
Swap uses temp variable correctly [OK]
Hint: Use temp variable to swap two array elements safely [OK]
Common Mistakes:
Overwriting one element before saving it
Swapping without temp variable causing data loss
Confusing indices in swap
3. Given a min-heap array: [2, 5, 8, 10, 15], what will be the heap array after inserting 1 and performing bubble up?
medium
A. [1, 2, 8, 10, 15, 5]
B. [1, 5, 2, 10, 15, 8]
C. [1, 2, 5, 10, 15, 8]
D. [2, 5, 8, 10, 15, 1]
Solution
Step 1: Insert 1 at the end
Insert 1 at index 5: [2, 5, 8, 10, 15, 1]
Step 2: Bubble up 1
Parent of index 5 is index 2 (value 8). Since 1 < 8, swap: [2, 5, 1, 10, 15, 8]. Now index 2's parent is index 0 (value 2). Since 1 < 2, swap again: [1, 5, 2, 10, 15, 8].
Final Answer:
[1, 2, 5, 10, 15, 8] -> Option C
Quick Check:
Bubble up swaps until heap property restored [OK]
Hint: Insert at end, swap with parent while smaller [OK]
Common Mistakes:
Not swapping enough times to restore heap
Swapping with wrong parent index
Inserting element at wrong position
4. Consider this bubble up code snippet in C# for a min-heap insert:
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;
}
What is the bug in this code?
medium
A. The parent index calculation is incorrect; it should be (i / 2) instead of (i - 1) / 2
B. No bug; the code correctly performs bubble up
C. The swap uses wrong indices; should swap with i + 1
D. The loop condition should use > instead of < for a min-heap
Solution
Step 1: Check parent index formula
Parent index in zero-based heap is (i - 1) / 2, which is correct.
Step 2: Check loop condition and swap
Loop continues while current element is smaller than parent, swapping them correctly. Indices used in swap are correct.
Final Answer:
No bug; the code correctly performs bubble up -> Option B
Quick Check:
Parent index and swap logic are correct [OK]
Hint: Parent index = (i-1)/2; swap if child smaller [OK]
Common Mistakes:
Using wrong parent index formula
Reversing comparison operator in condition
Swapping with wrong indices
5. You have a max-heap represented by the array [20, 15, 18, 8, 10, 5]. You insert 17 and perform bubble up. What is the final heap array?
hard
A. [20, 17, 18, 8, 10, 5, 15]
B. [20, 15, 17, 8, 10, 5, 18]
C. [20, 15, 18, 8, 10, 17, 5]
D. [20, 15, 18, 8, 10, 5, 17]
Solution
Step 1: Insert 17 at the end
Insert 17 at index 6: [20, 15, 18, 8, 10, 5, 17]
Step 2: Bubble up 17 in max-heap
Parent of index 6 is index 2 (value 18). Since 17 < 18, no swap needed. Heap remains [20, 15, 18, 8, 10, 5, 17].
Step 3: Verify parent index
Parent of 6 is (6-1)/2 = 2 (18). 17 < 18, so no swap for max-heap bubble up.
Step 4: Re-examine options
Options A and B show incorrect bubbling up (A swaps with wrong parent 15, B swaps with parent 18). Since 17 < 18, no swap. Heap stays [20, 15, 18, 8, 10, 5, 17] matching [20, 15, 18, 8, 10, 5, 17].
Final Answer:
[20, 15, 18, 8, 10, 5, 17] -> Option D
Quick Check:
Bubble up swaps only if child > parent in max-heap [OK]
Hint: In max-heap, bubble up if child > parent only [OK]
Common Mistakes:
Swapping when child is smaller than parent
Confusing max-heap with min-heap rules
Incorrect parent index calculation
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.