| 1 | Start | 0 | 0 | 8 | [2, 0, 2, 1, 1, 0, 0, 2, 1] | Initial pointers set |
| 2 | Check arr[mid]=2, swap arr[mid] and arr[high] | 0 | 0 | 7 | [1, 0, 2, 1, 1, 0, 0, 2, 2] | Swap arr[0]<->arr[8], high=7 |
| 3 | Check arr[mid]=0, swap arr[low] and arr[mid] | 0 | 0 | 7 | [1, 0, 2, 1, 1, 0, 0, 2, 2] | No swap, mid=1 |
| 4 | Check arr[mid]=0, swap arr[low] and arr[mid] | 0 | 1 | 7 | [0, 1, 2, 1, 1, 0, 0, 2, 2] | Swap arr[0]<->arr[1], low=1, mid=2 |
| 5 | Check arr[mid]=2, swap arr[mid] and arr[high] | 1 | 2 | 7 | [0, 1, 2, 1, 1, 0, 0, 2, 2] | Swap arr[2]<->arr[7], high=6 |
| 6 | Check arr[mid]=2, swap arr[mid] and arr[high] | 1 | 2 | 6 | [0, 1, 2, 1, 1, 0, 0, 2, 2] | Swap arr[2]<->arr[6], high=5 |
| 7 | Check arr[mid]=0, swap arr[low] and arr[mid] | 1 | 2 | 5 | [0, 0, 1, 1, 1, 0, 2, 2, 2] | Swap arr[1]<->arr[2], low=2, mid=3 |
| 8 | Check arr[mid]=1, mid++ | 2 | 3 | 5 | [0, 0, 1, 1, 1, 0, 2, 2, 2] | mid=3 |
| 9 | Check arr[mid]=1, mid++ | 2 | 4 | 5 | [0, 0, 1, 1, 1, 0, 2, 2, 2] | mid=4 |
| 10 | Check arr[mid]=1, mid++ | 2 | 5 | 5 | [0, 0, 1, 1, 1, 0, 2, 2, 2] | mid=5 |
| 11 | Check arr[mid]=0, swap arr[low] and arr[mid] | 2 | 5 | 5 | [0, 0, 0, 1, 1, 1, 2, 2, 2] | Swap arr[2]<->arr[5], low=3, mid=6 |
| 12 | mid=6 > high=5, exit loop | 3 | 6 | 5 | [0, 0, 0, 1, 1, 1, 2, 2, 2] | Loop ends as mid > high |