Quicksort (Grokking Algorithms)

bhavkushwaha

Bhav Kushwaha

Posted on September 29, 2023

Quicksort (Grokking Algorithms)

Quicksort is a sorting algorithm which is frequently used in real life.

Let's explore different senarios where we can implement Quicksort:-

Array Containing 0 or 1 Element

Empty arrays and single element array will not need to be sorted. The base case will be the result for them.

0 Array & 1 Array

Array Containing 2 Elements

An array containing two Elements is also easy to sort.

2 Array

Array Containing 3 Elements

In order to sort an array containing three elements, we need to break it down to the base case using the Divide & Conquer approach.

3 Array

  • First pickup an element from the array, called the pivot.

(Will discuss how to pickup a good pivot later, for now lets take the first element as pivot.)

pivot

  • Now find the elements smaller than the pivot and the elements larger than the pivot.

partioning

This is called Partioning. You have :
1) A sub-array of all the numbers less than the pivot
2) The pivot
3) A sub-array of all the numbers more than the pivot

  • The two two sub-arrays obtained are not neccessarily sorted. Therefore, we come come across 2 cases:

1) If the sub-arrays are sorted then we can combine the whole thing

left array + pivot + right array = Sorted Array

2) If the sub-arrays are not sorted then we have to sort them.

We can do that by applying quicksort on the sub-arrays (since we know the results of sorting an array containing 0 or 1 elements or 2 elements array).

quicksort([15, 10]) + [33] + quicksort([])

> [10, 15, 33]

sorted 3 Array

  • Similary, we can choose any element of the array as pivot and apply the above steps to obtain a sorted array.

Array Containing 4 Elements

Suppose we are given an array

4 Array

  • We choose 33 as the pivot element.

pivot33

  • The left sub-array has 3 elements. We had already seen how to sort an array of three elements: call quicksort on it recursively.

sub-array sort

  • Therefore, we can now easily repeat the steps learned above to sort the 4 elements array.

Sorting an array of 5 elements (Different Pivots)

Given Array :

5 Array

Different Pivot Elements :

Different Pivots

Notice: all the sub-arrays of any pivot lies between 0-4 elements, and we can easily sort them as seen in the above examples.

Example 1)

Example 1

Example 2)

Example 2

The Code for Quicksort

def quicksort(array):

 if len(array) < 2:
  return array
  # Base Case: arrays with 0 or 1 elements

 else:
  pivot = array[0]
  # Recursive Case

  less = [ i for i in array [1:] if i <= pivot] 
  # Sub-array to the left of the pivot

  greater = [ i for i in array [1:] if i > pivot] 
  # Sub-array to the right of the pivot

  return quicksort(less) + [pivot] + quicksort(greater)


print quicksort([10, 5, 2, 3])
Enter fullscreen mode Exit fullscreen mode
💖 💪 🙅 🚩
bhavkushwaha
Bhav Kushwaha

Posted on September 29, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Quicksort (Grokking Algorithms)
computerscience Quicksort (Grokking Algorithms)

September 29, 2023