设计一个算法,将两个元素有序(从小到大)的顺序表合并成一个有序顺序表……

提示上说是二路归并 刚学数据结构 不怎么会 用c语言版本做

第1个回答  2012-02-28
#include<stdio.h>
void read(int a[],int n)
{
int i;
for(i=0;i<n;i++)scanf("%d",&a[i]);
}
int main()
{
int a[1100],n,m,b[100];
int c[1000],k,i,j;
scanf("%d%d",&n,&m);
read(a,n);
read(b,n);
j=i=k=0;
while(i<n&&j<m)
{
while(i<n&&j<m&&a[i]<=b[j])
{
c[k++]=a[i];
i++;
}
while(i<n&&j<m&&b[j]<=a[i])
{
c[k++]=b[j];
j++;
}
}
while(i<n)
{
c[k++]=a[i];
i++;
}
while(j<m)
{
c[k++]=b[j];
j++;
}
for(i=0;i<k;i++)printf("%d ",c[i]);
puts("");
return 0;
}本回答被网友采纳
第2个回答  2012-02-28
int a[100],b[100],c[200];//自己定义
int *p1=a,*p2=b,*p3=c;
*p3++=*p1<*p2?*p1++:*p2++;
for(;p3<c+200;p3++)
*p3=*p1<*p2?*p1++:*p2++;

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网