Quicksort Iterative or Recursive
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.
Quicksort is one of the most efficient and widely used sorting algorithms in computer science. It is known for its simplicity and its ability to efficiently handle large datasets. In this article, we'll explore both the iterative and recursive implementations of the quicksort algorithm, diving into their mechanics, advantages, and potential drawbacks.
Introduction to Quicksort
Quicksort is a comparison-based sorting algorithm, which follows the divide-and-conquer paradigm. The basic idea is to select a 'pivot' element from the array and partition the other elements into two sub-arrays according to whether they are smaller or larger than the pivot. Depending on the implementation, the pivot selection can vary, with common strategies including picking the first element, the last element, the median, or a random element.
Recursive Quicksort
The traditional implementation of quicksort is recursive. The algorithm continually divides the array into smaller sub-arrays, sorts them, and combines the results. Here's the basic recursive algorithm:
- Simplicity: The recursive version is intuitive and easy to understand.
- Space Complexity: Due to recursion, it requires additional stack space. In the worst case (already sorted array), this can be .
- Time Complexity:
- Best/Average Case:
- Worst Case: (which occurs when the smallest or largest element is always chosen as the pivot).
- Space Complexity: Uses a custom stack, reducing the required memory to in the average case.
- Improved Performance: By avoiding function call overhead, it can be faster in practice for large datasets.
- Complexity: It requires careful handling of the stack, which can introduce complexity into the implementation.
- First Element: Simple but can degrade performance for sorted inputs.
- Last Element: Similar to first element, often leads to poor partitioning.
- Random Element: Reduces the chance of worst-case performance.
- Median of Three: Picks the median of the first, middle, and last elements; improves performance by providing better partitioning in general.
Related reading

DSA Fundamentals
Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.