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