Canonical Example: MergeSort
MergeSort (A,low,high):
/* A[low..high] contains items
   to be sorted. */
if (low < high) {
   mid = ë(low+high)/2û;
   MergeSort(A,low,mid);
   MergeSort(A,mid+1,high);
   Merge(A,low,mid,high);
}

Merge (A,i,j,k):
/* Merge A[i..j] with A[j+1..k]
   leaving the result back in A. */
B = A[i..j];
C = A[j+1,k];
while (B nonempty or C nonempty){
   Choose smallest of B and C;
   Move it into D;
}
Copy D back into A[i..k];
CS409 - Spring 2000
2