|
发表于 2023-5-8 17:01:00
|
显示全部楼层
本楼为最佳答案
以下是C语言的代码实现:
- #include <stdio.h>
- int main() {
- int n1, n2, i, j, k;
- int a[100], b[100], c[200];
- // 输入第一个有序数组
- scanf("%d", &n1);
- for (i = 0; i < n1; i++) {
- scanf("%d", &a[i]);
- }
- // 输入第二个有序数组
- scanf("%d", &n2);
- for (i = 0; i < n2; i++) {
- scanf("%d", &b[i]);
- }
- // 归并两个有序数组
- i = j = k = 0;
- while (i < n1 && j < n2) {
- if (a[i] < b[j]) {
- c[k++] = a[i++];
- } else {
- c[k++] = b[j++];
- }
- }
- while (i < n1) {
- c[k++] = a[i++];
- }
- while (j < n2) {
- c[k++] = b[j++];
- }
- // 输出归并后的有序数组
- for (i = 0; i < k; i++) {
- printf("%d", c[i]);
- if (i != k - 1) {
- printf(" ");
- }
- }
- return 0;
- }
复制代码
首先,我们定义了三个数组, a 、 b 用来存放输入的两个有序数组, c 用来存放归并后的有序数组。
然后,我们按照题目要求输入两个有序数组。
接着,我们使用归并排序的思想,从头开始比较 a 和 b 的元素,将较小的元素存入 c 中,并将其所在数组的下标向后移动一位。重复这个过程,直到其中一个数组的所有元素都被归并到 c 中。最后,将剩余的元素直接存入 c 中。
最后,我们按照题目要求输出归并后的有序数组。 |
|