会可能卡着的点:在于不会把剩余的给加上,例如一个数组已经完成了,不知道如何将另一个数组全部输出而不导致错误。
解法1:
int a=0,b=0;
int m[1000]={0};//一定要写大一点的空间,防止数组溢出
int n[1000]={0};
scanf("%d %d",&a,&b);
int i=0;
int j=0;
//开始排序
while(i<a && j<b){
if(m[i]<n[j]){
printf("%d ",m[i]);
i++;
}else{
printf("%d ",n[j]);
j++;
}
}//基本的排序完成
//下面是未输进去的数组全部输出
if(i==a && j<b){
for(;j<b;j++){
printf("%d ",n[j]);
}
}else{
for(;i<a;i++){
printf("%d ",m[i]);
}
}
return 0;
}
方法2:
#include<stdio.h>
int main()
{
int n, m;
scanf("%d %d\n", &n, &m);//输入n,m
int i, j,arr[2000];
int tmp;
for(i=0; i<n; i++)
{
scanf("%d ", &arr[i]);
}
for(i=n; i<n+m; i++)
{
scanf("%d ", &arr[i]);
}//输入到一个数组中去
for(i=0; i<n+m; i++)
{
for(j=0; j<n+m-i-1; j++)
{
if(arr[j] > arr[j+1])
{
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}//冒泡排序完成输出
for(i=0; i<n+m; i++)
{
printf("%d ", arr[i]);
}//输出新的数组
}