题目
输入样例
5
1 2 3 4 5
6
7 8 9 10 11 12
输出样例
1 2 3 4 5
7 8 9 10 11 12
1 2 3 4 5 7 8 9 10 11 12
代码
#include<iostream>
using namespace std;
void inputArray(int* arr, int n) {
for (int i = 0; i < n; i++) {
cin >> arr[i];
if (i > 0 && arr[i - 1] > arr[i]) {
cout << "Wrong sequence, try again" << endl;
i--;
}
}
}
void mergeArrays(int* a, int n1, int* b, int n2, int* c) {
int i = 0, j = 0, k = 0;
while (i < n1 && j < n2) {
if (a[i] < b[j]) {
c[k] = a[i];
i++;
}
else {
c[k] = b[j];
j++;
}
k++;
}
while (i < n1) {
c[k] = a[i];
i++;
k++;
}
while (j < n2) {
c[k] = b[j];
j++;
k++;
}
}
int main()
{
int n1, n2;
cin >> n1;
int* a = new int[n1];
// 输入第一个数组
inputArray(a, n1);
cin >> n2;
int* b = new int[n2];
// 输入第二个数组
inputArray(b, n2);
int len = n1 + n2;
int* c = new int[len];
// 合并两个数组
mergeArrays(a, n1, b, n2, c);
// 输出三个数组
for (int i = 0; i < n1; i++) {
cout << a[i] << " ";
}
cout << endl;
for (int i = 0; i < n2; i++) {
cout << b[i] << " ";
}
cout << endl;
for (int m = 0; m < len; m++) {
cout << c[m] << " ";
}
delete[] a;
delete[] b;
delete[] c;
return 0;
}
① 函数inputArray()
用于输入数组并检查
② 函数mergeArrays
用于合并两个有序数组
③ 别忘了释放动态分配的内存