|
 |
 |
 |
 |
 |
 |
 |
 |
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];
|
|
|
|