Skip to main content

Understanding dutch national flag sort algorithm


Now that we have explored the significance, advantages, and limitations of the Dutch National Flag sort, we can turn our attention to understanding the algorithm behind it. In the following section, we will examine how the algorithm works step by step and see how it efficiently organizes elements into their respective partitions.

Algorithm

The Dutch National Flag algorithm is designed to sort an array containing only three distinct values (commonly 0, 1, and 2) by partitioning the array into three sections and expanding them as the algorithm progresses. The algorithm uses three pointers, all 0 indexed, to keep track of the boundaries between the sections (in the bullets below, n is the size of the input array).

  • The left pointer is set to 0 and marks the boundary of the section containing elements equal to 0.
  • The mid pointer is set to 0 and is used to traverse the array.
  • The right pointer is set to n - 1 and marks the boundary of the section containing the elements equal to 2.

Set the left, mid and right pointers

At any point during execution, the array maintains the following structure:

  • Elements from index 0 to left - 1 are all 0s (sorted smallest section).
  • Elements from index left to mid - 1 are all 1s (sorted middle section).
  • Elements from index mid to right are unsorted.
  • Elements from index right + 1 to n - 1 are all 2s (sorted largest section).

The smallest, middle, unsorted and largest sections in the array

Liking the course? Check our discounted plans to continue learning.