Merge Sort does recursive splitting and merging:
- The maximum number of elements being worked on (merged) at any one time is bounded by n, the size of the array.
- Each level of recursion may allocate temporary arrays, but these allocations don’t accumulate simultaneously — older ones get discarded or reused.
TODO: