mergeSort(A, left, right)begin if left < right then mid ← (left + right) / 2 mergeSort(A, left, mid) mergeSort(A, mid+1, right) merge(A, left, mid, right)endmerge(A, left, mid, right)begin L ← A[left..mid] R ← A[mid+1..right] i ← 0; j ← 0; k ← left while i < |L| and j < |R| do if L[i] ≤ R[j] then A[k] ← L[i]; i ← i+1 else A[k] ← R[j]; j ← j+1 k ← k+1 copy remaining L to A copy remaining R to Aend