C++代码:
#include<climits>
void MERG(int *A,int p,int q,int r){
int n = p - q + 1;
int m = r - q;
int L = new int [n+1];
int R = new int [m+1];
int i, j;
for(i = 0;i < n - 1;i++)
L[i] = A[p +i -1];
for(j = 0;i < m - 1;j++)
R[j] = A[q+j];
L[n] = INT_MAX;
R[N] = INT_MAX;
i = 0;
j = 0;
for(int k = p;k < r;k++)
if(L[i] <= R[j]){
A[k] = L[i];
i++;
}else{
A[k] = R[j];
j++;
}
}
void MERGE_Sort(int *A,int p,int q)
{
if(q < r){
int q = (p + r) / 2;
MERGE_Sort(A,p,q);
MERGE_Sort(A,q+1,r);
MERG(A,p,q,r);
}
}