提示上说是二路归并 刚学数据结构 不怎么会 用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;
}本回答被网友采纳
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++;
int *p1=a,*p2=b,*p3=c;
*p3++=*p1<*p2?*p1++:*p2++;
for(;p3<c+200;p3++)
*p3=*p1<*p2?*p1++:*p2++;