Mergesort
Pseudo code for the Mergesort algorithm:
MERGE-SORT(A, left, right)
if(left < right)
mid = floor((left+right)/2)
MERGE-SORT(A, left, mid)
MERGE-SORT(A, mid+1, right)
MERGE(A, left, mid, right)
MERGE(A, left, mid, right)
numLeft = mid - left + 1;
numRight = right - (mid + 1) + 1 = right - mid;
L[0...numLeft]
R[0...numRight]
// Copy over left elements
for(i = left; i <= mid; i++)
L[i-left] = A[i];
// Copy over right elements
for(i = mid+1; i <= right; i++)
R[i-mid+1] = A[i];
L[numLeft] = infinity;
R[numRight] = infinity;
i = 0; // index into L
j = 0; // index into R
for(k = left; k <= right; k++){
if(L[i] <= R[j]){
A[k] = L[i];
i++;
}
else{
A[k] = R[j]
j++;
}
}