Input array:
1 9 2 8 3 7 4 5 

Splitter maintains an array section of smaller numbers
to the left, in blue, and a section of large numbers
to the right, in green. Unprocessed numbers in the middle are in red.

Enter split: bottom = 0, top= 8, split value= 1
1 9 2 8 3 7 4 5 
1 9 2 8 3 7 4 5 
Exit split: split at= 1

Enter split: bottom = 1, top= 8, split value= 9
9 2 8 3 7 4 5 
9 2 8 3 7 4 5 
Exit split: split at= 8

Enter split: bottom = 1, top= 7, split value= 5
5 2 8 3 7 4 
5 2 4 3 7 8 
5 2 4 3 7 8 
Exit split: split at= 5

Enter split: bottom = 1, top= 5, split value= 5
5 2 4 3 
5 2 4 3 
Exit split: split at= 5

Enter split: bottom = 1, top= 4, split value= 3
3 2 4 
3 2 4 
Exit split: split at= 3

Enter split: bottom = 1, top= 3, split value= 3
3 2 
3 2 
Exit split: split at= 3

Enter split: bottom = 5, top= 7, split value= 7
7 8 
7 8 
Exit split: split at= 6
Output array:
1 2 3 4 5 7 8 9