LOMUTO PARTITION on [2 8 7 1 3 5 6 4]
  pivot x = A[7] = 4
  j = 0, A[j] = 2 <= 4: grow the small region to i = 0 and swap A[0] with A[0]
    [2 8 7 1 3 5 6 4]  
  j = 1, A[j] = 8 > 4: leave it in the large region, i stays 0
    [2 8 7 1 3 5 6 4]  
  j = 2, A[j] = 7 > 4: leave it in the large region, i stays 0
    [2 8 7 1 3 5 6 4]  
  j = 3, A[j] = 1 <= 4: grow the small region to i = 1 and swap A[1] with A[3]
    [2 1 7 8 3 5 6 4]  
  j = 4, A[j] = 3 <= 4: grow the small region to i = 2 and swap A[2] with A[4]
    [2 1 3 8 7 5 6 4]  
  j = 5, A[j] = 5 > 4: leave it in the large region, i stays 2
    [2 1 3 8 7 5 6 4]  
  j = 6, A[j] = 6 > 4: leave it in the large region, i stays 2
    [2 1 3 8 7 5 6 4]  
  put the pivot in its place: swap A[3] with A[7]
    [2 1 3 4 7 5 6 8]  
  returns q = 3 (0-based), pivot sits at A[3] = 4

HOARE PARTITION on [17 12 6 19 23 8 5 10], pivot = last element = 10
  pivot value x = 10
  scan 1: j stops at index 7 (A[j]=10), i stops at index 0 (A[i]=17); i < j so swap
    [10 12 6 19 23 8 5 17]  
  scan 2: j stops at index 6 (A[j]=5), i stops at index 1 (A[i]=12); i < j so swap
    [10 5 6 19 23 8 12 17]  
  scan 3: j stops at index 5 (A[j]=8), i stops at index 3 (A[i]=19); i < j so swap
    [10 5 6 8 23 19 12 17]  
  scan 4: j stops at index 3 (A[j]=8), i stops at index 4 (A[i]=23); i >= j so stop and return j = 3
  final array:    [10 5 6 8 23 19 12 17]  
  left part A[0..3] = 10 5 6 8 
  right part A[4..7] = 23 19 12 17 

HOARE PARTITION on [17 12 6 19 23 8 5 10], pivot = first element = 17
  pivot value x = 17
  scan 1: j stops at index 7 (A[j]=10), i stops at index 0 (A[i]=17); i < j so swap
    [10 12 6 19 23 8 5 17]  
  scan 2: j stops at index 6 (A[j]=5), i stops at index 3 (A[i]=19); i < j so swap
    [10 12 6 5 23 8 19 17]  
  scan 3: j stops at index 5 (A[j]=8), i stops at index 4 (A[i]=23); i < j so swap
    [10 12 6 5 8 23 19 17]  
  scan 4: j stops at index 4 (A[j]=8), i stops at index 5 (A[i]=23); i >= j so stop and return j = 4
  final array:    [10 12 6 5 8 23 19 17]  
  left part A[0..4] = 10 12 6 5 8 
  right part A[5..7] = 23 19 17
