Input array: 5 0 4 1 4 1 5 0 0 2 3 3 3 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= 13, split value= 5 5 0 4 1 4 1 5 0 0 2 3 3 3 5 0 4 1 4 1 5 0 0 2 3 3 3 Exit split: split at= 13 Enter split: bottom = 0, top= 12, split value= 3 3 0 4 1 4 1 5 0 0 2 3 3 3 0 3 1 4 1 5 0 0 2 3 4 3 0 3 1 3 1 5 0 0 2 4 4 3 0 3 1 3 1 2 0 0 5 4 4 3 0 3 1 3 1 2 0 0 5 4 4 Exit split: split at= 9 Enter split: bottom = 0, top= 9, split value= 3 3 0 3 1 3 1 2 0 0 3 0 3 1 3 1 2 0 0 Exit split: split at= 9 Enter split: bottom = 0, top= 8, split value= 0 0 0 3 1 3 1 2 0 0 0 0 1 3 1 2 3 0 0 0 1 3 1 2 3 Exit split: split at= 3 Enter split: bottom = 0, top= 3, split value= 0 0 0 0 0 0 0 Exit split: split at= 3 Enter split: bottom = 0, top= 2, split value= 0 0 0 0 0 Exit split: split at= 2 Enter split: bottom = 3, top= 8, split value= 1 1 3 1 2 3 1 1 3 2 3 1 1 3 2 3 Exit split: split at= 5 Enter split: bottom = 3, top= 5, split value= 1 1 1 1 1 Exit split: split at= 5 Enter split: bottom = 5, top= 8, split value= 3 3 2 3 3 2 3 Exit split: split at= 8 Enter split: bottom = 5, top= 7, split value= 3 3 2 3 2 Exit split: split at= 7 Enter split: bottom = 9, top= 12, split value= 5 5 4 4 5 4 4 Exit split: split at= 12 Enter split: bottom = 9, top= 11, split value= 4 4 4 4 4 Exit split: split at= 11 Output array: 0 0 0 1 1 2 3 3 3 4 4 5 5