2-路归并排序就是将组内的元素先分为两组,进行排序,然后再将拍好序的两组分为两组,继续排序...直到最后剩一个元素为止,最后将这些组进行合并
下面是二路归并排序的递归算法:
int mergee(int a[],int L1,int R1,int L2,int R2)
{
int i=L1,j=L2,index=0;
int c[100]={0};
while(i<=R1&&j<=R2)
{
if(a[i]<=a[j])
c[index++]=a[i++];
else
c[index++]=a[j++];
}
while(i<=R1)
c[index++]=a[i++];
while(j<=R2)
c[index++]=a[j++];
for(i=0;i<index;i++)
{
a[L1+i]=c[i];
}
}
int mergeSort(int a[],int left,int right)
{
if(left<right)
{
int mid=(left+right)/2;
mergeSort(a,left,mid);
mergeSort(a,mid+1,right);
mergee(a,left,mid,mid+1,right);
}
}