Advertisement

基于分治的双递归 基于分治的双递归

阅读量:

归并排序基于分治策略与递归机制进行操作,其双重递归的具体实现方式究竟是怎样的呢?今日在理解过程中遇到了一些困惑,始终未能彻底掌握其中的原理。经过深入思考并查阅相关资料后,终于清晰地掌握了其递归过程的实际运作方式!

致已熟悉归并排序的开发者
代码示例:

复制代码
    void Merge(int r[],int r1[],int s,int m,int t)
    //归并子序列
    {
    int i=s,j=m+1;
    int k=s;
    while(i<=m&&j<=t)
    {
        if(r[i]<=r[j]) r1[k++]=r[i++];
        else r1[k++]=r[j++];
    }
    while(i<=m) r1[k++]=r[i++];
    while(j<=t) r1[k++]=r[j++];
    }
    void MergeSort(int r[],int s,int t)
    {
    int m,r1[1000];
    if(s==t) return;//递归的边界条件 只有一个记录 已经有序
    else
    {
        m=(s+t)/2;//划分
        //1
        MergeSort(r,s,m); //求解子问题1,

全部评论 (0)

还没有任何评论哟~