Challenge - 5 Problems
Quick Sort Partition Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of Lomuto Partition on Array
What is the output array after applying Lomuto partition on the array [8, 3, 7, 6, 2] with pivot as last element?
DSA Javascript
function lomutoPartition(arr, low, high) {
let pivot = arr[high];
let i = low - 1;
for (let j = low; j < high; j++) {
if (arr[j] <= pivot) {
i++;
[arr[i], arr[j]] = [arr[j], arr[i]];
}
}
[arr[i + 1], arr[high]] = [arr[high], arr[i + 1]];
return arr;
}
const arr = [8, 3, 7, 6, 2];
lomutoPartition(arr, 0, arr.length - 1);
console.log(arr);Attempts:
2 left
💡 Hint
Remember Lomuto places pivot at its correct position and partitions smaller elements to left.
✗ Incorrect
Lomuto partition picks last element as pivot (2). It moves all elements <= 2 to left. Only 2 is <= 2, so it swaps 2 with first element. Result: [2, 3, 7, 6, 8]
❓ Predict Output
intermediate2:00remaining
Output of Hoare Partition on Array
What is the output array after applying Hoare partition on the array [5, 1, 4, 2, 8] with pivot as first element?
DSA Javascript
function hoarePartition(arr, low, high) {
let pivot = arr[low];
let i = low - 1;
let j = high + 1;
while (true) {
do {
i++;
} while (arr[i] < pivot);
do {
j--;
} while (arr[j] > pivot);
if (i >= j) return arr;
[arr[i], arr[j]] = [arr[j], arr[i]];
}
}
const arr = [5, 1, 4, 2, 8];
hoarePartition(arr, 0, arr.length - 1);
console.log(arr);Attempts:
2 left
💡 Hint
Hoare partition swaps elements around pivot until pointers cross.
✗ Incorrect
Pivot is 5. Hoare moves i right until >=5 and j left until <=5, swapping elements. After swaps, array becomes [4, 1, 2, 5, 8].
🧠 Conceptual
advanced1:30remaining
Difference Between Lomuto and Hoare Partition
Which statement correctly describes a key difference between Lomuto and Hoare partition schemes?
Attempts:
2 left
💡 Hint
Think about where the pivot ends after partition in each scheme.
✗ Incorrect
Lomuto places pivot at its correct sorted position after partition. Hoare partition rearranges elements but pivot may not be at final position.
🔧 Debug
advanced2:00remaining
Identify the Bug in Lomuto Partition Code
What error will this Lomuto partition code produce when run on array [4, 9, 3, 7]?
function lomutoPartition(arr, low, high) {
let pivot = arr[high];
let i = low;
for (let j = low; j < high; j++) {
if (arr[j] <= pivot) {
[arr[i], arr[j]] = [arr[j], arr[i]];
i++;
}
}
[arr[i], arr[high]] = [arr[high], arr[i]];
return i;
}
Attempts:
2 left
💡 Hint
Check initial value of i and how it affects swaps.
✗ Incorrect
Initial i should be low - 1, not low. Starting at low causes pivot to be misplaced, off-by-one error.
🚀 Application
expert2:30remaining
Number of Items Left of Pivot After Hoare Partition
Given array [10, 7, 8, 9, 1, 5] and pivot as first element (10), after applying Hoare partition, how many elements are guaranteed to be on the left side of the pivot's final position?
Attempts:
2 left
💡 Hint
Hoare partition rearranges but pivot may not be at final position.
✗ Incorrect
Hoare partition ensures elements less than or equal to pivot are on one side, but pivot's final position is not fixed. So at least one element <= pivot is on left.