题目:归并排序
问题描述:
采用归并排序的方式,将两个已排序的数组,合并为一个数组并输出。
输入格式:
输入第一行包含M N两个数,分别是第一和第二两个数组长度,空格分隔。
M<100,N<100。
第二行为第一个已排序的数组,空格分隔
第三行为第二个已排序的数组,空格分隔
输出格式
输出排序好的从小到大数组,空格分隔
样例输入:
4 4
1 2 3 4
2 3 4 5
样例输出:
1 2 2 3 3 4 4 5
C语言代码:
#include "stdio.h"
int main()
{
int i,j,k,m,n;
scanf("%d%d",&n,&m);
int a[n];
int b[m];
int c[m+n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<m;i++)
{
scanf("%d",&b[i]);
}
i=0;j=0;k=0;
while(j<n&&k<m){
if(a[j]<b[k]){
c[i]=a[j];
j++;
}else{
c[i]=b[k];
k++;
}
i++;
}
while(j<n){
c[i]=a[j];
j++;
i++;
}
while(k<m){
c[i]=b[k];
k++;
i++;
}
for(i=0;i<n+m;i++)
{
printf("%d ",c[i]);
}
}