Divide-and-conquer: split in half, recursively sort, merge.
Merge Sort: O(n log n) all cases. Stable. O(n) auxiliary memory. Used by Python (TimSort) and Java for objects.