你没有规定sort()用什么排序方式,我用的冒泡。
没有什么注释先道个歉。
不知道你要这个程序是做什么的,计算机专业还是随便玩玩,如果是专业的这种基础算法一定要掌握。
#include<stdio.h>
void arrayio(int a[], int n,char io);
void sort(int a[],int n);
void merger(int a[], int n, int b[], int m, int c[]);
int main()
{
int a[5],b[10],c[15];
printf("Input Array a[5]:\n");
arrayio(a,5,'i');
printf("Input Array b[10]:\n");
arrayio(b,10,'i');
sort(a,5);
sort(b,10);
merger(a,5,b,10,c);
printf("Output Array c[15]:\n");
arrayio(c,15,'o');
//system("PAUSE");
return 0;
}
void arrayio(int a[], int n,char io)
{
int i;
switch(io)
{
case 'i':
for(i=0;i<n;++i) scanf("%d",&a[i]);
break;
case 'o':
for(i=0;i<n;++i) printf("%d ",a[i]);
printf("\n");
break;
default:
printf("Wrong parameter.\n");
}
}
void sort(int a[],int n)
{
int i,j,temp;
//Bubble
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
void merger(int a[], int n, int b[], int m, int c[])
{
int i,j,k;
i=j=0;
for(k=0;k<m+n;k++)
{
if(i<n && j<m)
{
if(a[i]>b[j])
{
c[k]=b[j];
j++;
}
else
{
c[k]=a[i];
i++;
}
}
else if(i==n)
{
for(;j<m;j++)
{
c[k]=b[j];
k++;
}
}
else //j==m
{
for(;i<n;i++)
{
c[k]=a[i];
k++;
}
}
}
}
输入输出:
Input Array a[5]:
9 1 4 2 5
Input Array b[10]:
8 3 6 4 7 2 9 8 5 3 4
Output Array c[15]:
1 2 2 3 3 4 4 5 5 6 7 8 8 9 9
温馨提示:答案为网友推荐,仅供参考