📖 Scenario: You have a list of numbers that you want to sort from smallest to largest. Sorting helps you find things faster, like arranging books by height on a shelf.
🎯 Goal: You will build a program that uses the Quick Sort method to sort a list of numbers. Quick Sort works by picking a number, splitting the list into smaller parts, and sorting those parts step by step.
📋 What You'll Learn
Create an array called numbers with the exact values: [8, 3, 7, 6, 2, 5, 4, 1]
Write a function called partition that takes arr, low, high, uses pivot at arr[low], rearranges subarray [low..high], returns new pivot index
Write a recursive function called quickSort that takes arr, low, high and sorts the subarray using partition
Call quickSort(numbers, 0, numbers.length - 1) and print using console.log(numbers)
💡 Why This Matters
🌍 Real World
Sorting is used everywhere, like organizing files, searching data quickly, or arranging products by price in online stores.
💼 Career
Understanding Quick Sort helps in software development roles where efficient data handling and algorithm knowledge are important.
Progress0 / 4 steps
1
Create the initial array
Create an array called numbers with these exact values: [8, 3, 7, 6, 2, 5, 4, 1]
DSA Javascript
Hint
Use const to create the array named numbers with the given values.
2
Write the partition function
Write a function called partition that takes an array arr, low, high. Use arr[low] as pivot value. Rearrange the subarray so all smaller than pivot are left of pivot's final position, larger on right. Return the new index of the pivot.
DSA Javascript
Hint
Pivot at low. Loop from low + 1 to high inclusive. Swap smaller elements towards swapIndex. Place pivot at swapIndex at end.
3
Write the quickSort function
Write a recursive function called quickSort that takes arr, low, high. If low >= high, return. Partition the subarray, then recursively sort left (low to pi-1) and right (pi+1 to high).
DSA Javascript
Hint
Base case if (low >= high) return;. let pi = partition(arr, low, high); Recurse: quickSort(arr, low, pi - 1);quickSort(arr, pi + 1, high);
4
Call quickSort and print
Call quickSort(numbers, 0, numbers.length - 1). Then print the sorted array using console.log(numbers).
DSA Javascript
Hint
Add quickSort(numbers, 0, numbers.length - 1);console.log(numbers); at the end.
Practice
(1/5)
1. What is the main idea behind the Quick Sort algorithm in the divide and conquer approach?
easy
A. Divide the array into smaller parts, sort them, and combine the results
B. Sort the array by repeatedly swapping adjacent elements
C. Use extra space to merge two sorted arrays
D. Sort the array by selecting the smallest element each time
Solution
Step 1: Understand divide and conquer in Quick Sort
Quick Sort divides the array into parts based on a pivot, sorts each part recursively.
Step 2: Compare with other sorting methods
Unlike bubble or selection sort, Quick Sort uses division and recursion, not just swapping or selecting smallest.
Final Answer:
Divide the array into smaller parts, sort them, and combine the results -> Option A
Quick Check:
Quick Sort = Divide and conquer [OK]
Hint: Remember: divide, sort parts, then combine [OK]
Common Mistakes:
Confusing Quick Sort with bubble or selection sort
Thinking Quick Sort merges arrays like merge sort
Ignoring the pivot selection step
2. Which of the following is the correct syntax to choose a pivot element in a Quick Sort function in JavaScript?
easy
A. const pivot = arr.push();
B. const pivot = arr.length;
C. const pivot = arr.sort();
D. const pivot = arr[0];
Solution
Step 1: Identify how to select pivot in Quick Sort
The pivot is usually an element from the array, often the first or last element.
Step 2: Check each option's correctness
const pivot = arr[0]; selects the first element as pivot correctly. Others use wrong methods or properties.
Final Answer:
const pivot = arr[0]; -> Option D
Quick Check:
Pivot selection = arr[0] [OK]
Hint: Pivot is an element, not array length or method result [OK]
Common Mistakes:
Using array length as pivot
Calling array methods instead of accessing element
Confusing pivot with sorted array
3. What will be the output of the following JavaScript Quick Sort partition step?
const arr = [4, 2, 7, 1];
const pivot = arr[0]; // 4
let left = [];
let right = [];
for(let i = 1; i < arr.length; i++) {
if(arr[i] <= pivot) left.push(arr[i]);
else right.push(arr[i]);
}
console.log(left);
console.log(right);
medium
A. [4, 2] and [7, 1]
B. [7] and [2, 1]
C. [2, 1] and [7]
D. [1, 2, 4] and []
Solution
Step 1: Identify pivot and partition logic
Pivot is 4. Elements less or equal to 4 go to left, others to right.
Step 2: Partition the array
Elements: 2 <= 4 -> left, 7 > 4 -> right, 1 <= 4 -> left. So left = [2,1], right = [7].
Final Answer:
[2, 1] and [7] -> Option C
Quick Check:
Partition by pivot 4 = [2,1] left, [7] right [OK]
Hint: Compare each element to pivot, separate into left/right [OK]
Common Mistakes:
Including pivot in left or right arrays
Mixing up less than and greater than conditions
Forgetting to start loop from index 1
4. Identify the error in this Quick Sort partition code snippet:
function partition(arr) {
const pivot = arr[0];
let left = [];
let right = [];
for(let i = 0; i < arr.length; i++) {
if(arr[i] < pivot) left.push(arr[i]);
else right.push(arr[i]);
}
return [...left, pivot, ...right];
}
medium
A. Use arr[i] <= pivot in condition instead of <
B. Loop should start from 1 to avoid including pivot twice
C. Pivot should be last element, not first
D. Return statement should not use spread operator
Solution
Step 1: Analyze loop range and pivot usage
The loop starts at 0, so pivot element arr[0] is included in left or right arrays again.
Step 2: Correct loop start index
Loop should start at 1 to skip pivot element and avoid duplication.
Final Answer:
Loop should start from 1 to avoid including pivot twice -> Option B
Quick Check:
Loop index = 1 to exclude pivot [OK]
Hint: Start loop after pivot index to avoid duplicates [OK]
Common Mistakes:
Starting loop at 0 causing pivot duplication
Changing pivot position unnecessarily
Misunderstanding spread operator usage
5. Given the array [3, 6, 8, 10, 1, 2, 1], what is the correct sorted array after applying Quick Sort fully?
hard
A. [1, 1, 2, 3, 6, 8, 10]
B. [1, 2, 3, 6, 8, 10]
C. [3, 6, 8, 10, 1, 2, 1]
D. [10, 8, 6, 3, 2, 1, 1]
Solution
Step 1: Understand Quick Sort fully sorts the array
Quick Sort recursively partitions and sorts all parts until fully sorted.
Step 2: Sort the array manually
Sorted array is [1, 1, 2, 3, 6, 8, 10], including duplicates in order.