Java 合并排序问题

l0l0l0l · 2019-11-11 20:59:40 · 热度: 38

`void merge_sort(int *A, int p, int r)
{
if(p<r)
{
int q;
q=(p+r)/2;
cout<<”q: “<<q<<endl;
merge_sort(A, p, q);
merge_sort(A, q+1, r);
merge(A, p, q, r);
cout<<endl;
}
}

void merge(int *A, int p, int q, int r)
{
int n1, n2, i, j, L[20], R[20];

n1 = q-p+1;
n2 = r-q;

for(i=0; i<n1; i++)
{
    L[i]=A[p+i];
}
//L[n1]=1000000;
for(j=0; j<n2; j++)
{
    R[j]=A[q+j+1];
}
//R[n2]=1000000;
i=0;
j=0;

for(int k=p; k<=r; k++)
{
    if((i<n1 && j<n2) && L[i]<=R[j] )
    {
        A[k]=L[i];
        cout<<"a"<<A[k]<<" ";
        i++;
    }
    else if((i<n1 && j<n2) && L[i]>R[j])
    {
        A[k]=R[j];
        cout<<"b"<<A[k]<<" ";
        j++;
    }
    else if(i==n1)
    {
        A[k]=R[j];
    }
    else if(j==n2)
    {
        A[k]=L[i];
    }
}

}`

我的代码不适用于2的幂的输入,您知道如何使它适用于任何类型的输入吗. 我正在使用interviewbit网站进行练习。

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册