#include <stdio.h>
/*
将两个升序排序的序列合并为一个有序序列
参数表:
size1 待合并数组arr1的大小
size2 待合并数组arr2的大小
mergeArr 用于记录合并后的数组
*/
void MergeArr(int arr1[], int size1, int arr2[], int size2, int mergeArr[])
{
int size = size1 + size2;
int index1 = 0;
int index2 = 0;
int i = 0;
for(index1 = 0, index2 = 0, i = 0; i < size; i++)
{
if(index1 < size1 && index2 < size2)
{
if(arr1[index1] < arr2[index2])
{
mergeArr[i] = arr1[index1];
index1++;
}
else
{
mergeArr[i] = arr2[index2];
index2++;
}
}else if (index1 >= size1) {
//数组1中的元素已经全部合并完,剩下的按顺序存放数组2剩下的元素
mergeArr[i] = arr2[index2];
index2++;
}else {
//数组2中的元素已经全部合并完,剩下的按顺序存放数组1剩下的元素
mergeArr[i] = arr1[index1];
index1++;
}
}
}
int main() {
int arr1[1000] = { 0 };
int arr2[1000] = { 0 };
int size1 = 0;
int size2 = 0;
scanf("%d %d", &size1, &size2);
for(int i = 0; i < size1; i++)
{
scanf("%d", &arr1[i]);
}
for(int i = 0; i < size2; i++)
{
scanf("%d", &arr2[i]);
}
int mergeArr[2000] = { 0 };
int size = size1 + size2;
MergeArr(arr1, size1, arr2, size2, mergeArr);
for(int i = 0; i < size; i++)
{
printf("%d ", mergeArr[i]);
}
return 0;
}