| 1 | Initialize i = low - 1 | -1 | - | 5 | [3, 8, 2, 5, 1, 4] | i = -1 |
| 2 | j=0, arr[j]=3 <= pivot(5)? Yes | -1 | 0 | 5 | [3, 8, 2, 5, 1, 4] | i=0, swap arr[0], arr[0] (no change) |
| 3 | j=1, arr[j]=8 <= pivot(5)? No | 0 | 1 | 5 | [3, 8, 2, 5, 1, 4] | No change |
| 4 | j=2, arr[j]=2 <= pivot(5)? Yes | 0 | 2 | 5 | [3, 8, 2, 5, 1, 4] | i=1, swap arr[1], arr[2] -> [3, 2, 8, 5, 1, 4] |
| 5 | j=3, arr[j]=5 <= pivot(5)? Yes | 1 | 3 | 5 | [3, 2, 8, 5, 1, 4] | i=2, swap arr[2], arr[3] -> [3, 2, 5, 8, 1, 4] |
| 6 | j=4, arr[j]=1 <= pivot(5)? Yes | 2 | 4 | 5 | [3, 2, 5, 8, 1, 4] | i=3, swap arr[3], arr[4] -> [3, 2, 5, 1, 8, 4] |
| 7 | End loop, swap arr[i+1], pivot | 3 | - | 5 | [3, 2, 5, 1, 8, 4] | swap arr[4], arr[5] -> [3, 2, 5, 1, 4, 8] |
| 8 | Return pivot index i+1 | 4 | - | 5 | [3, 2, 5, 1, 4, 8] | Pivot index = 4 |
| 9 | Hoare init i=low=0, j=high+1=6 | 0 | 6 | 3 | [3, 2, 5, 1, 4, 8] | i=0, j=6 |
| 10 | Increment i until arr[i]>=pivot | 0 | 6 | 3 | [3, 2, 5, 1, 4, 8] | i=0 arr[0]=3 >=3 stop |
| 11 | Decrement j until arr[j]<=pivot | 0 | 5 | 3 | [3, 2, 5, 1, 4, 8] | j=5 arr[5]=8 >3 j=4 arr[4]=4 >3 j=3 arr[3]=1 <=3 stop |
| 12 | i < j? 0<3 Yes, swap arr[i], arr[j] | 0 | 3 | 3 | [3, 2, 5, 1, 4, 8] | swap arr[0], arr[3] -> [1, 2, 5, 3, 4, 8] |
| 13 | Increment i until arr[i]>=pivot | 1 | 3 | 3 | [1, 2, 5, 3, 4, 8] | i=1 arr[1]=2 <3 i=2 arr[2]=5 >=3 stop |
| 14 | Decrement j until arr[j]<=pivot | 2 | 3 | 3 | [1, 2, 5, 3, 4, 8] | j=3 arr[3]=3 <=3 stop |
| 15 | i < j? 2<3 Yes, swap arr[i], arr[j] | 2 | 3 | 3 | [1, 2, 5, 3, 4, 8] | swap arr[2], arr[3] -> [1, 2, 3, 5, 4, 8] |
| 16 | Increment i until arr[i]>=pivot | 3 | 3 | 3 | [1, 2, 3, 5, 4, 8] | i=3 arr[3]=5 >=3 stop |
| 17 | Decrement j until arr[j]<=pivot | 3 | 2 | 3 | [1, 2, 3, 5, 4, 8] | j=2 arr[2]=3 <=3 stop |
| 18 | i >= j? 3 >= 2 Yes, return j=2 | 3 | 2 | 3 | [1, 2, 3, 5, 4, 8] | Partition index = 2 |