分治思想
//归并
void Merge(int R[],int left,int right)
{
int mid=(left+right)/2;
int *p=(int *) malloc(sizeof(int)*(right-left+1));
int i=left,j=mid+1;
int k=0;
while(i<=mid&&j<=right){
if(R[i]>R[j]){
p[k++]=R[j++];
}else{
p[k++]=R[i++];
}
}
while(i<=mid)
p[k++]=R[i++];
while(j<=right)
p[k++]=R[j++];
k=0;
while(left<=right){
R[left++]=p[k++];
}
free(p);
}
//归并排序
void MergeSort(int R[],int left,int right)
{
if(left<right){
int mid=(left+right)/2;
MergeSort(R,left,mid);
MergeSort(R,mid+1,right);
Merge(R,left,right);
}
}