Divide the array into halves, recursively sort each half, then merge the two sorted halves. Guaranteed O(n log n) in all cases.
// tap NEXT STEP to walk through one step at a time