编程分别输入两个按从小到大排序的数组a和b,将这两个有序数组合并,使合并后的数

 我来答
百度网友0d4f8d9
2020-12-28
知道答主
回答量:1
采纳率:0%
帮助的人:523
展开全部
#include<stdio.h>
#define N 20
int main()
{

int a[N]={ 0 }, b[N]={ 0 };
int anum,bnum,c[N+N];
int *pi, *pj,*pk;
scanf("%d",&anum); //输入数组a元素个数
for(pi=a;pi<a+anum;pi++)
{
scanf("%d",pi);
}
scanf("%d",&bnum); //输入数组b元素个数
for(pj=b;pj<b+bnum;pj++)
{
scanf("%d",pj);
}

/***** 在数组a和b都有数据时比较两个数组 *****/
/********** Begin *********/
pi=a,pj=b,pk=c;
while(pi<a+anum&&pj<b+bnum)
{
if(*pi<*pj)
{
*pk=*pi;
pk++;
pi++;
}
else
{
*pk=*pj;
pk++;
pj++;
}
}
if(pi<a+anum)
{while(pi<a+anum)
{*pk=*pi;
pk++;
pi++;}

}
if(pj<b+bnum)
{while(pj<b+bnum)
{*pk=*pj;
pk++;
pj++;}

}
for ( pk=c; pk<c+anum+bnum; pk++ ) printf("%d ", *pk );

/********** End **********/

/***** 如果数组a还有数据 *****/
/********** Begin *********/

/********** End **********/

/***** 如果数组b还有数据 *****/
/********** Begin *********/

/********** End **********/

/***** 输出数组c *****/
/********** Begin *********/

/********** End **********/
printf("\n");
return 0;
}
水凌星
推荐于2018-05-15 · TA获得超过182个赞
知道答主
回答量:27
采纳率:100%
帮助的人:0
展开全部
#define N 10
#define M 5
main()
{ int a[N], b[M], c[N+M], i, j, k ;
printf("Enter Array a \n");
for(i=0; i<N; i++) scanf("%d", &a[i]);
printf("Enter Array b \n");
for(i=0; i<M; i++) scanf("%d", &b[i]);
i=j=k=0;
while( i<N&&j< M )
if ( a[i]< b[j] ) c[k++] =a[i++];
else c[k++] = b[j++];
if(i<N) c[k++]=a[i];
if(j<M) c[k++]=b[j];
for ( i=0; i<N+M; i++ ) printf("%8d", c[i] );
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哈哈哈好的哈哈哈哈哈哈哈哈哈哈哈哈好哈哈
2011-05-04 · TA获得超过149个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:114万
展开全部
void merger(int a[],int n,int b[],int m,int c[])
{
int i,j,k;
i=j=k=0;
//concurrent merge
while(i<n&&j<m)
{
if(a[i]>b[j])
{
c[k]=b[j];
j++;
k++;
}
else
{
c[k]=a[i];
k++;
i++;
}
}
//merge one
while(i<n)
{
c[k]=a[i];
i++;
k++;
}
//merge one
while(j<m)
{
c[k]=b[j];
j++;
k++;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风留得尘沙
2012-05-02
知道答主
回答量:1
采纳率:0%
帮助的人:1616
展开全部
完整体: 数组a和b中分别放入an+1和bn+1个有小到大的有序数,请把这两个数组中的数由小到大的顺序归并在c数组中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
满地桃李争春4283
2011-05-12 · TA获得超过5.9万个赞
知道小有建树答主
回答量:2.1万
采纳率:0%
帮助的人:2715万
展开全部
void merger(int a[],int n,int b[],int m,int c[])
{
int i,j,k;
i=j=k=0;
//concurrent merge
while(i<n&&j<m)
{
if(a[i]>b[j])
{
c[k]=b[j];
j++;
k++;
}
else
{
c[k]=a[i];
k++;
i++;
}
}
//merge one
while(i<n)
{
c[k]=a[i];
i++;
k++;
}
//merge one
while(j<m)
{
c[k]=b[j];
j++;
k++;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式