#include<iostream.h>
void Mergesort(int *A,int p,int r);
void Merge(int *A,int p,int q,int r);
void main(){
int n=4;
int *A=new int[n];
for(int i=0;i<n;i++)
cin>>A[i];
Mergesort(A,0,n-1);
for(i=0;i<n;i++)
cout<<"A["<<i<<"]="<<A[i]<<endl;
}
void Mergesort(int *A,int p,int r){
int q;
if(p<r){
q=(p+r)/2;
Mergesort(A,p,q);
Mergesort(A,q+1,r);
Merge(A,p,q,r);
}
}
void Merge(int *A,int p,int q,int r){
int n1=q-p;
int n2=r-q-1;
int *L=new int[n1];
int *R=new int[n2];
for(int i=0;i<=n1;i++)
L[i]=A[p+i];
for(int j=0;j<=n2;j++)
R[j]=A[q+j];
i=0;
j=0;
for(int k=p;k<=r;k++){
if(L[i]<R[j])
{
A[k]=L[i];
i=i+1;
}
else
{
A[k]=R[j];
j=j+1;
}
}
while(L[i]) A[k++]=L[i++];
while(R[j]) A[k++]=R[j++];
delete [](L);
delete [](R);
}
这是一个归并排序的程序,不知道对与否,特来向各位大虾请教一番。
请各位大虾帮忙看一下程序的错误之处
答案:2 悬赏:70 手机版
解决时间 2021-04-15 23:46
- 提问者网友:斑駁影
- 2021-04-15 15:34
最佳答案
- 五星知识达人网友:北城痞子
- 2021-04-15 16:20
你放到VC里运行下就知道是不是对的了。
全部回答
- 1楼网友:鱼忧
- 2021-04-15 16:32
有一个很严重的错误,
void Merge(int *A,int p,int q,int r){//无效的调用
void Mergesort(int *A,int p,int q,int r){//无效的调用
无返回值时,传值时最好传引用,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯