Pseudocode
- function mergeSort(list, start, end):
- if start ≥ end: return
- mid ← ⌊(start + end) / 2⌋
- mergeSort(list, start, mid)
- mergeSort(list, mid + 1, end)
- merge(list, start, mid, end)
- function merge(list, start, mid, end):
- left ← list[start..mid]
- right ← list[mid + 1..end]
- i ← j ← 0
- for k from start to end:
- if j = |right| or (i < |left| and left[i] ≤ right[j]):
- list[k] ← left[i]; i ← i + 1
- else:
- list[k] ← right[j]; j ← j + 1