博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
归并排序(无哨兵实现)
阅读量:5354 次
发布时间:2019-06-15

本文共 852 字,大约阅读时间需要 2 分钟。

void Merge(int *a, int ileft, int imid, int iright) //辅助函数

{
    int n1 = imid - ileft + 1; 
    int n2 = iright - imid; 
    int *Larray = new int[n1];
    int *Rarray = new int[n2];
    //分解
    for(int i = 0; i <= n1 - 1; i++)
    {
        Larray[i] = a[ileft+i];
    }
    for(int j = 0; j <= n2 - 1; j++)
    {
        Rarray[j] = a[imid+1+j];
    }
    //合并
    int i = 0, j =0;
    for(int k = ileft; k <= iright; k++)
    {
        if(i==n1) //Larray中已无元素(i越界)
        {
            a[k] = Rarray[j];
            j++;
        }
        else if(j==n2) //Rarray中已无元素(j越界)
        {
            a[k] = Larray[i];
            i++;
        }
        else
        {
            if(Larray[i]<=Rarray[j])
            {
                a[k] = Larray[i];
                i++;
            }
            else
            {
                a[k] = Rarray[j];
                j++;
            }
        }
    }
    delete []Larray;
    delete []Rarray;
}
void MergeSort(int *a, int ileft, int iright)  //接口
{
    if(ileft < iright)
    {
        int imid = (ileft + iright) / 2;
        MergeSort(a, ileft, imid);
        MergeSort(a, imid+1, iright);
        Merge(a, ileft, imid, iright);
    }
}

转载于:https://www.cnblogs.com/xly0713/p/3188011.html

你可能感兴趣的文章
加固linux
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
YUI3自动加载树实现
查看>>
kettle导数到user_用于left join_20160928
查看>>
较快的maven的settings.xml文件
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
malloc() & free()
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
关于这次软件以及pda终端的培训
查看>>