执行时出现问题_[归并排序]

问题描述 投票:0回答:0

我正在尝试编写合并排序的代码,但在使用随机值进行测试时显示错误。 它编译完美,所以我在弄清楚它时遇到了问题。

是不是因为我没用过

void mrg(int a[],int l, int m, int r)
{

    int n1=m-l+1;
    int n2=r-m;

    int *l1=new int[n1];
    int *r1=new int[n2];

    for(int i=0;i<n1;i++)
    {
        l1[i]=a[l+i];
    }
    for(int i=0;i<n2;i++)
    {
        r1[i]=a[m+1+i];
    }

    int l2=0,r2=0;
    for(int i=l;i<=r;i++)
    {
        if(l1[l2]>r1[r2])
        {
            a[i]=r1[r2];
            r2++;
        }else
        {
            a[i]=l1[l2];
            l2++;
        }
        if(i==m)
        {
            if(l2==n1)
            {
                for(int j=i+1;j<=r;j++)
                {
                    a[i]=r1[r2];
                    r2++;
                }
                break;
            }
            if(r2==n2)
            {
                for(int j=i+1;j<=r;j++)
                {
                    a[i]=l1[l2];
                    l2++;
                }
                break;
            }
        }
    }

    delete[] l1;
    delete[] r1;
}

void mrgesort(int a[], int l, int r)
{
    int m=l+(r-1)/2;
    mrgesort(a,l,m);
    mrgesort(a,m,r);
    mrg(a,l,m,r);
}


在使用数组给出输入后,它退出程序而不显示输出。

c++ mergesort
© www.soinside.com 2019 - 2024. All rights reserved.