题解 | #有序序列合并#
有序序列合并
https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897
#include <stdio.h>
int main() {
int n, m;
// 读取 n 和 m 的值
scanf("%d %d", &n, &m);
// 初始化并读取数组 a
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 初始化并读取数组 b
int b[m];
for (int i = 0; i < m; i++) {
scanf("%d", &b[i]);
}
// 初始化合并数组 c
int c[n + m];
int i = 0, j = 0, k = 0;
// 合并两个有序数组
while (i < n && j < m) {
if (a[i] <= b[j]) {
c[k++] = a[i++];
} else {
c[k++] = b[j++];
}
}
// 将数组 a 剩余元素加入 c
while (i < n) {
c[k++] = a[i++];
}
// 将数组 b 剩余元素加入 c
while (j < m) {
c[k++] = b[j++];
}
// 输出合并后的数组
for (int i = 0; i < n + m; i++) {
printf("%d", c[i]);
if (i < n + m - 1) {
printf(" ");
}
}
printf("\n");
return 0;
}
查看6道真题和解析