Merge Sort
Split in half, sort each half, merge the sorted halves. Guaranteed O(n log n), stable, and the merge step is sequential-access friendly — the backbone of external sorting.
- Category
- Sorting
- Time complexity
- O(n log n)
- Space complexity
- O(n)
Pseudocode
mergeSort(lo, hi) split at mid mergeSort each half merge sorted halves done
Reference implementation
def merge_sort(a):
if len(a) <= 1: return a
mid = len(a) // 2
return merge(
merge_sort(a[:mid]),
merge_sort(a[mid:]))