Dutch National Flag (Sort Colors) Visualizer & Step-by-Step Algorithm Solution

Sort an array of 0s, 1s, and 2s in-place in linear time using Dijkstra's 3-way partitioning Dutch National Flag algorithm.

Category: arrays | Difficulty: Medium

Tags: Two Pointers, Sorting, Array, In-Place

Dutch National Flag (Sort Colors)

Color Array [0s: Red, 1s: White, 2s: Blue]
2
0
0
1
2
2
1
3
1
4
0
5
100%
state
arrayLength6
Initialization
1/30
Explanation

Starting Dutch National Flag 3-way partitioning on [2, 0, 2, 1, 1, 0].

Source Code
1function dutchNationalFlag(arr: number[]): void {
2 let low = 0;
3 let mid = 0;
4 let high = arr.length - 1;
5
6 while (mid <= high) {
7 if (arr[mid] === 0) {
8 [arr[low], arr[mid]] = [arr[mid], arr[low]];
9 low++;
10 mid++;
11 } else if (arr[mid] === 1) {
12 mid++;
13 } else {
14 [arr[mid], arr[high]] = [arr[high], arr[mid]];
15 high--;
16 }
17 }
18}