请教大家一个编程问题
有两个整型数组A(N),B(M)(N>0,M>0),且已知A(1)≥A(2)≥A(3)≥…≥A(N), B(1)≥B(2)≥B(3)≥…≥B(M),请编写一段程序将数组A(N)与B(M)中的元素合并为一个新的数组C(M+N),且C(1)≥C(2)≥C(3)≥…≥C(N+M)(只限BASIC语言与C语言)
怎么看都像是作业嘛。怎么到处都是这种归并的呀。
程序代码:#include<stdio.h>
void merge(int *a,int *b,int m,int n,int *c)
{
while(m&&n)
{
if(*a>*b)
{
*c=*a;
a++;
c++;
m--;
}
else
{
*c=*b;
b++;
c++;
n--;
}
}
for(;m>0;m--)
{
*c=*a;
a++;
c++;
}
for(;n>0;n--)
{
*c=*b;
b++;
c++;
}
}
void main()
{
int i;
int A[5]={10,9,8,6,3};
int B[3]={9,7,2};
int C[8];
merge(A,B,5,3,C);
for(i=0;i<8;i++)
printf("%d ",C[i]);
}写的很怪,故意的
程序代码:#include <stdio.h>
/**有两个整型数组A(N),B(M)(N>0,M>0),且已知A(1)≥A(2)≥A(3)≥…≥A(N),
B(1)≥B(2)≥B(3)≥…≥B(M),请编写一段程序将数组A(N)与B(M)中的元素合并为
一个新的数组C(M+N),且C(1)≥C(2)≥C(3)≥…≥C(N+M)(只限BASIC语言与C语言)*/
void linkn(int *a,int *b,int n,int m,int *c)
{
//1.先把a[n]和b[m]中的元素都放入c[]中
int i,j,temp;
for(i=0;i<m+n;i++)
{
if(i<n)
*(c+i)=*(a+i);
else
*(c+i)=*(b+i-n);
}
//2.将c中的元素排序
for(i=0;i<m+n;i++)
for(j=0;j<m+n;j++)
{
if(*(c+i) > *(c+j))
{
temp=*(c+i);
*(c+i)=*(c+j);
*(c+j)=temp;
}
}
}
int main()
{
int a[5]={6,4,3,2,1};
int b[4]={7,6,5,0};
int c[9];
int i;
linkn(a,b,5,4,c);
for(i=0;i<9;i++)
printf("%d ",c[i]);
printf("\n");
}
这个自己写的 仅供参考哈
