有序序列的合并(数组)
问题描述 :
使用数组编程:
有两个非递减有序序列,将它们合并成一个非递减有序序列。
注意:编程时要利用到“有序”这个条件,从而降低时间复杂度。
输入说明 :
第一行输入序列A:
第一个整数m(0<=m<=100),表示序列A共有m个元素,其后有m个整数,表示序列A的元素
第二行输入序列B:
第一个整数n(0<=n<=100),表示序列B共有n个元素,其后有n个整数,表示序列B的元素
输出说明 :
输出合并后的序列,数字之间以一个空格分隔。
#include <iostream>
using namespace std;
int main()
{
int n, m, i,mid;
int number[204] = { 0 };
int add[102] = { 0 };
cin >> n ;
for (i = 0; i < n; i++) {
cin >> number[i];
}
cin >> m;
for (i = 0; i < m; i++) {
cin >> add[i];
}
for (int j = 0; j < m; j++) {
mid = add[j];
for (i = 0; i < n; i++) {
if (mid <= number[i]) {
for (int p = n; p > i; p--) {
number[p] = number[p - 1];
}
number[i] = mid;
n += 1;
break;
}
else {
if (i == n - 1) {
number[n] = mid;
n += 1;
break;
}
else {
continue;
}
}
}
}
for (i = 0; i < n; i++) {
cout << number[i];
if (i != n-1) {
cout << " ";
}
}
}