`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网站进行练习。
猜你喜欢:暂无回复。