第1个回答 推荐于2018-05-15
#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] );
}本回答被网友采纳
第2个回答 2011-05-04
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++;
}
}
第3个回答 2012-05-02
完整体: 数组a和b中分别放入an+1和bn+1个有小到大的有序数,请把这两个数组中的数由小到大的顺序归并在c数组中。
第4个回答 2011-05-12
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++;
}
}