| 1 | Choose pivot | [10, 7, 8, 9, 1, 5] | 5 | low=0, high=5, i=-1, j=0 | Start partitioning |
| 2 | Compare arr[j]=10 > pivot=5 | [10, 7, 8, 9, 1, 5] | 5 | i=-1, j=0 | No swap, j++ |
| 3 | Compare arr[j]=7 > pivot=5 | [10, 7, 8, 9, 1, 5] | 5 | i=-1, j=1 | No swap, j++ |
| 4 | Compare arr[j]=8 > pivot=5 | [10, 7, 8, 9, 1, 5] | 5 | i=-1, j=2 | No swap, j++ |
| 5 | Compare arr[j]=9 > pivot=5 | [10, 7, 8, 9, 1, 5] | 5 | i=-1, j=3 | No swap, j++ |
| 6 | Compare arr[j]=1 < pivot=5 | [10, 7, 8, 9, 1, 5] | 5 | i=-1, j=4 | i=0, swap arr[i]=10 and arr[j]=1 → [1, 7, 8, 9, 10, 5] |
| 7 | End partition loop | [1, 7, 8, 9, 10, 5] | 5 | i=0, j=5 | Swap pivot arr[high]=5 with arr[i+1]=7 → [1, 5, 8, 9, 10, 7] |
| 8 | Pivot placed at index 1 | [1, 5, 8, 9, 10, 7] | 5 | pivot index=1 | Partition done, recursive calls on subarrays |
| 9 | Recursive call on left subarray | [1, 5, 8, 9, 10, 7] | - | low=0, high=0 | Base case reached, no action |
| 10 | Recursive call on right subarray | [1, 5, 8, 9, 10, 7] | - | low=2, high=5 | Start partitioning |
| 11 | Choose pivot | [1, 5, 8, 9, 10, 7] | 7 | low=2, high=5, i=1, j=2 | Start partitioning |
| 12 | Compare arr[j]=8 > pivot=7 | [1, 5, 8, 9, 10, 7] | 7 | i=1, j=2 | No swap, j++ |
| 13 | Compare arr[j]=9 > pivot=7 | [1, 5, 8, 9, 10, 7] | 7 | i=1, j=3 | No swap, j++ |
| 14 | Compare arr[j]=10 > pivot=7 | [1, 5, 8, 9, 10, 7] | 7 | i=1, j=4 | No swap, j++ |
| 15 | End partition loop | [1, 5, 8, 9, 10, 7] | 7 | i=1, j=5 | Swap pivot arr[high]=7 with arr[i+1]=8 → [1, 5, 7, 9, 10, 8] |
| 16 | Pivot placed at index 2 | [1, 5, 7, 9, 10, 8] | 7 | pivot index=2 | Partition done, recursive calls on subarrays |
| 17 | Recursive call on left subarray | [1, 5, 7, 9, 10, 8] | - | low=2, high=1 | Base case reached, no action |
| 18 | Recursive call on right subarray | [1, 5, 7, 9, 10, 8] | - | low=3, high=5 | Start partitioning |
| 19 | Choose pivot | [1, 5, 7, 9, 10, 8] | 8 | low=3, high=5, i=2, j=3 | Start partitioning |
| 20 | Compare arr[j]=9 > pivot=8 | [1, 5, 7, 9, 10, 8] | 8 | i=2, j=3 | No swap, j++ |
| 21 | Compare arr[j]=10 > pivot=8 | [1, 5, 7, 9, 10, 8] | 8 | i=2, j=4 | No swap, j++ |
| 22 | End partition loop | [1, 5, 7, 9, 10, 8] | 8 | i=2, j=5 | Swap pivot arr[high]=8 with arr[i+1]=9 → [1, 5, 7, 8, 10, 9] |
| 23 | Pivot placed at index 3 | [1, 5, 7, 8, 10, 9] | 8 | pivot index=3 | Partition done, recursive calls on subarrays |
| 24 | Recursive call on left subarray | [1, 5, 7, 8, 10, 9] | - | low=3, high=2 | Base case reached, no action |
| 25 | Recursive call on right subarray | [1, 5, 7, 8, 10, 9] | - | low=4, high=5 | Start partitioning |
| 26 | Choose pivot | [1, 5, 7, 8, 10, 9] | 9 | low=4, high=5, i=3, j=4 | Start partitioning |
| 27 | Compare arr[j]=10 > pivot=9 | [1, 5, 7, 8, 10, 9] | 9 | i=3, j=4 | No swap, j++ |
| 28 | End partition loop | [1, 5, 7, 8, 10, 9] | 9 | i=3, j=5 | Swap pivot arr[high]=9 with arr[i+1]=10 → [1, 5, 7, 8, 9, 10] |
| 29 | Pivot placed at index 4 | [1, 5, 7, 8, 9, 10] | 9 | pivot index=4 | Partition done, recursive calls on subarrays |
| 30 | Recursive call on left subarray | [1, 5, 7, 8, 9, 10] | - | low=4, high=3 | Base case reached, no action |
| 31 | Recursive call on right subarray | [1, 5, 7, 8, 9, 10] | - | low=5, high=5 | Base case reached, no action |
| 32 | All recursive calls done | [1, 5, 7, 8, 9, 10] | - | - | Array fully sorted |