利用分治策略实现一维数组排序

分治法-排序

  1. 伪代码描述
    利用分治策略实现一维数组排序
    利用分治策略实现一维数组排序
  2. 代码实现
void Merge(int a[],int l,int m,int r)
{
    int i=l;
    int j=m+1;
    int k=0;
    int resu[N]={0};
    while((i<=m)&&(j<=r))
    {
        if(a[i]<a[j])
        {
            resu[k]=a[i];
            i++;
        }
        else
        {
            resu[k]=a[j];
            j++;
        }
        k++;
    }
    while(i<=m)
    {
        resu[k]=a[i];
        i++;k++;
    }
    while(j<=r)
    {
        resu[k]=a[j];
        j++;k++;
    }
    for(i=0;i<k;i++)
    {
        a[l++]=resu[i];
    }
}
void MergeSort(int a[],int l,int r)
{
    int m;
    if(r-l>=1)
    {
        m=(l+r)/2;
        MergeSort(a,l,m);
        MergeSort(a,m+1,r);
        Merge(a,l,m,r);
    }
}