要求:输入包含三行,
第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。
第二行包含n个整数,用空格分隔。
第三行包含m个整数,用空格分隔。
例子:
5 6
1 3 7 9 22
2 8 10 17 33 44
1 2 3 7 8 9 10 17 22 33 44
这种方法比较粗暴简单,但是花费时间代码数量也比较多
#include <stdio.h>
int main()
{
int n;
int m;
//确定俩行的个数
printf("请输入n和m\n");
scanf("%d %d", &n, &m);
int arr1[1000];
int arr2[1000];
int i;
//输入数据
printf("arr1[]=");
for (i = 0; i < n; i++)
{
scanf("%d", &arr1[i]);
}
printf("\n");
printf("arr2[]=");
for (i = 0; i < m; i++)
{
scanf("%d", &arr2[i]);
}
printf("\n");
//一种简单粗暴,比较笨重的方法;
// 直接将arr1和arr2合并成arr3,在进行冒泡排序
int arr3[2000];
int k;
//先将arr1中的数据给arr3
for (i = 0,k=0; i < n; i++,k++)
{
arr3[k] = arr1[i];
}
//再将arr2中的数据给arr3
for (k = n, i = 0; k < n + m; k++, i++)
{
arr3[k] = arr2[i];
}
//冒泡排序
for (i = 0; i < n + m - 1; i++)
{
int j;
for (j = 0; j < n + m - 1 - i; j++)
{
if (arr3[j] > arr3[j + 1])
{
int tmp = arr3[j];
arr3[j] = arr3[j + 1];
arr3[j + 1] = tmp;
}
}
}
//最后进行打印出来
printf("arr3[]=");
for (i = 0; i < n + m; i++)
{
printf("%d ", arr3[i]);
}
}
接下来的方法代码数量较少,更加简洁,但对比上面思路比较难
前面不变
主要思路:1 3 7 9 22 i
2 8 10 17 33 44 j
用k存入arr3数组 i,j,k初始化为0
用 arr1[i]=1和arr2[j]=2比较 1小 存入arr3[k] 并且k++,i++
随后将arr1[i]=3和arr2[j]=2比较 2小 存入arr3[k] k++,j++
#include <stdio.h>
int main()
{
int n;
int m;
//确定俩行的个数
printf("请输入n和m\n");
scanf("%d %d", &n, &m);
int arr1[1000];
int arr2[1000];
int i;
//输入数据
printf("arr1[]=");
for (i = 0; i < n; i++)
{
scanf("%d", &arr1[i]);
}
printf("\n");
printf("arr2[]=");
for (i = 0; i < m; i++)
{
scanf("%d", &arr2[i]);
}
printf("\n");
//直接比较 将arr1中的各个元素与arr2中的对应元素比较
//1 3 7 9 22 i
//2 8 10 17 33 44 j
//思路: 用k存入arr3数组 i,j,k初始化为0
// 用 arr1[i]=1和arr2[j]=2比较 1小 存入arr3[k] 并且k++,i++
// 随后将arr1[i]=3和arr2[j]=2比较 2小 存入arr3[k] k++,j++
int arr3[2000];
i = 0;
int k = 0; int j = 0;
while (i < n && j < m)
{
if (arr1[i] < arr2[j])
{
arr3[k] = arr1[i];
k++; i++;
}
else
{
arr3[k] = arr2[j];
j++; k++;
}
}
//假如其中一个数组先存完,再将另外一个数组全部存入arr3;
if (i == n)
{
while (j < m)
{
arr3[k] = arr2[j];
k++; j++;
}
}
else
{
while (i < n)
{
arr3[k] = arr1[i];
k++; i++;
}
}
//打印arr3数组
printf("arr3[]=");
for (k = 0; k < n + m; k++)
{
printf("%d ", arr3[k]);
}
}
感谢观看!!!