DSA Home
Getting Started
A Simple Algorithm
Prerequisites
Foundations
DSA Arrays
Bubble Sort
Selection Sort
Insertion Sort
Quicksort
Counting Sort
Radix Sort
Merge Sort
Linear Search
Binary Search
Linked List
Linked Lists in Memory
Linked Lists Types
Linked Lists Operations
DSA Stacks
DSA Queue
DSA Hash Tables
DSA Hash Sets
DSA Hash Maps
DSA Trees
Binary Trees
Pre-order Traversal of Binary Trees
DSA In-order Traversal
DSA Post-order Traversal
DSA Array Implementation
DSA Binary Search Trees
DSA AVL Trees
DSA Graphs
🚀 DSA: Quicksort Algorithm
Master the Fastest Divide-and-Conquer Sorting Technique
Welcome back to GoNimbus DSA tutorials!
In this lesson, we’ll explore Quicksort — a powerful, efficient, and widely used sorting algorithm that follows the divide-and-conquer strategy.
🔍 What Is Quicksort?
Quicksort sorts an array by choosing a pivot element and rearranging the remaining elements such that:
- All smaller (or equal) values go to the left of the pivot.
- All greater values go to the right of the pivot.
Then, it applies the same logic recursively to both sub-arrays until the entire list is sorted.
💡 Recursion means that a function calls itself to solve smaller versions of the same problem.
⚡ Speed:
✅ Fast — Average time complexity: O(n log n)
⚠️ Worst Case — O(n²) (happens when the pivot is always the smallest or largest element)
🧩 How Quicksort Works (Step-by-Step)
- Choose a Pivot:
Select any element from the array as the pivot (in this tutorial, we’ll pick the last element). - Partition the Array:
Move all smaller values to the left of the pivot, and all larger values to the right. - Place the Pivot:
Swap the pivot into its correct sorted position. - Repeat (Recursion):
Apply Quicksort again to the left and right sub-arrays until every sub-array is sorted.

🧠 Manual Walkthrough
Let’s take an example to understand this visually.
Array: [11, 9, 12, 7, 3]
Step 1: Choose the pivot → 3
Everything greater than 3 goes to the right. Swap 3 with 11.
→ [3, 9, 12, 7, 11]
Step 2: Choose the next pivot → 11
Arrange numbers so smaller ones are on the left.
→ [3, 9, 7, 11, 12]
Step 3: Now sort [9, 7] → swap to [7, 9]
✅ Result: [3, 7, 9, 11, 12] — the array is sorted!
✨ Each pivot divides the array into smaller parts, making sorting faster with every recursion.
🧮 Quicksort Implementation (Python Example)
Here’s how we can implement Quicksort in Python:
def partition(array, low, high):
pivot = array[high]
i = low - 1
for j in range(low, high):
if array[j] <= pivot:
i += 1
array[i], array[j] = array[j], array[i]
array[i+1], array[high] = array[high], array[i+1]
return i+1
def quicksort(array, low=0, high=None):
if high is None:
high = len(array) - 1
if low < high:
pivot_index = partition(array, low, high)
quicksort(array, low, pivot_index - 1)
quicksort(array, pivot_index + 1, high)
my_array = [64, 34, 25, 12, 22, 11, 90, 5]
quicksort(my_array)
print("Sorted array:", my_array)
Output:
Sorted array: [5, 11, 12, 22, 25, 34, 64, 90]
🧭 Understanding the Code
partition()→ Chooses the pivot and arranges elements around it.quicksort()→ Calls itself recursively to sort sub-arrays.- The recursion stops when there’s only 1 or 0 elements in a sub-array.
⏱️ Quicksort Time Complexity
| Scenario | Time Complexity | Explanation |
|---|---|---|
| Best Case | O(n log n) | Pivot splits array evenly each time |
| Average Case | O(n log n) | Most real-world cases |
| Worst Case | O(n²) | Pivot always chosen poorly (like smallest/largest element) |
⚡ Average Case (O(n log n)) is why Quicksort is one of the fastest comparison-based sorting algorithms used in production systems.
💡 Why Quicksort Is So Popular
✅ Highly efficient for large datasets
✅ Works in-place (requires minimal extra memory)
✅ Widely used in standard libraries (C, C++, Python, Java)
✅ Performs faster than most O(n²) sorting algorithms like Bubble or Insertion sort
🧰 Visualization Example
Imagine dividing your deck of cards using one card as a reference — everything smaller goes left, everything larger goes right.
Now repeat this for each pile until all cards are sorted. That’s exactly how Quicksort works!
📊 Time Complexity Comparison
| Algorithm | Average Case | Worst Case |
|---|---|---|
| Bubble Sort | O(n²) | O(n²) |
| Selection Sort | O(n²) | O(n²) |
| Insertion Sort | O(n²) | O(n²) |
| Quicksort | O(n log n) | O(n²) |
🎯 Key Takeaways
- Quicksort is fast, recursive, and efficient for most data sets.
- Average performance beats many simpler algorithms.
- Pivot choice is critical — random or median pivot selection can help avoid worst-case scenarios.
🧠 Practice Exercise
Try sorting the following array using Quicksort manually:[8, 2, 5, 1, 9, 3]
Can you list the pivot and sub-arrays at each recursive step?