Mental Model
We use three pointers to separate the array into three parts by swapping colors in one pass.
Analogy: Imagine sorting red, white, and blue balls into three boxes by moving balls between boxes with two hands.
Index: 0 1 2 3 4 5 6 Array: [2] [0] [2] [1] [1] [0] [0] Pointers: low ↑ mid ↑ high ↑
