Live Pseudocode
Highlighted line matches the current step.
MergeSort(A, l, r):
if l >= r: return
mid = β(l + r)/2β
MergeSort(A, l, mid)
MergeSort(A, mid+1, r)
Merge(A, l, mid, r)
Merge(A, l, mid, r):
i = l, j = mid+1, temp = []
while i <= mid and j <= r:
if A[i] <= A[j]: temp.push(A[i]); i++
else: temp.push(A[j]); j++
append remaining left/right to temp
copy temp back to A[l..r]
Tip: MergeSortβs total work is βn work per levelβ Γ βlog n levelsβ.
Complexity (Quick Visual)
What it means
Depth β 4 levels
Work per level β 16 merges/writes
Total work β 64 β O(n log n)
Extra space β O(n)
Quick Look
Facts
β
Always O(n log n) (best/avg/worst)
β
Stable (equal elements keep order)
β οΈ Needs extra memory (temp array)