题目描述
给定两个有序整数数组nums1和nums2,请输出2个数组合并后仍然保持升序的每一个元素。
输入描述
输入有3行数字。
第一行有2个数字,分别表示num1和num2的数组分别有多少个元素。(长度不超过50)
第二行是num1的所有元素。
第三行是num2的所有元素。
输出描述
从小到大排序好的数列,数字中间用空格分隔。
输入样例
3 3
1 3 5
2 4 6
输出样例
1 2 3 4 5 6
#include <iostream>
using namespace std;
int main() {
int a[110], b[110], c[210];
int a_length = 0, b_length = 0, c_length = 0;
int a_idx = 1, b_idx = 1, c_idx = 1;
scanf("%d %d",& a_length, &b_length);
c_length = a_length + b_length;
for (int i = 1; i <= a_length; i++)
scanf("%d", &a[i]);
for (int i = 1; i <= b_length; i++)
scanf("%d", &b[i]);
while ((a_idx <= a_length) && (b_idx <= b_length)){
if (a[a_idx] < b[b_idx])
c[c_idx ++] = a[a_idx ++];
else
c[c_idx ++] = b[b_idx ++];
}
if (a_idx > a_length) //若第二个序列有剩余
for (b_idx; b_idx <= b_length; b_idx ++)
c[c_idx ++] = b[b_idx];
else //若第一个序列有剩余
for (a_idx; a_idx <= a_length; a_idx ++)
c[c_idx ++] = a[a_idx];
for(int i = 1; i < c_idx; i++)
printf("%d ",c[i]);
return 0;
}