永发信息网

请各位大虾帮忙看一下程序的错误之处

答案:2  悬赏:70  手机版
解决时间 2021-04-15 23:46
#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);

}
这是一个归并排序的程序,不知道对与否,特来向各位大虾请教一番。
最佳答案

你放到VC里运行下就知道是不是对的了。

全部回答

有一个很严重的错误,

void Merge(int *A,int p,int q,int r){//无效的调用

void Mergesort(int *A,int p,int q,int r){//无效的调用

无返回值时,传值时最好传引用,

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
太平鼓出自?
为什么我的DNF老断啊 能上是能上 但一要出地
明天上海气候怎么样
菲菲生气了写一句话,生气时说的话和动作写一
怎么样才算处上对象了?
开鲁殡仪馆地址在什么地方,想过去办事
一叶,两叶,三叶的植物
我DNF为什么到2段没任务了?
怎样弄个免费的QQ空间的皮肤?
冬季适合路亚什么鱼
手机卡内存和储存卡
蛋清做面膜好还是蛋黄好,分别对什么有好处
熊猫是什么动物?
大力门业在哪里啊,我有事要去这个地方
湖南长沙宁乡县阳历十一月会下雪吗?
推荐资讯
为什么只要天气一冷我的例假就不来呢
方程(x+3)2-9=0的解是______
dnf开罐如何开出好装备
谁给我个零度13位字符,没用过的,谢谢
证券股涨完 哪个板块涨
成都温江有没有3000元以内的小户型?
新版炫舞舞团
工商银行可以查别人的账户吗
纹身怎么能快速知道恢复后的效果
2009年10月南通黄金市场价格多少钱一克
不相信爱情的经典语录,不相信爱情的诗
公路队农场在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?