MergeSort: in-place merge