2、 在数组a和数组b中分别放入不同数目个由大到小的有序整数,程序把两个数组中的数按由小到大的顺序归并到数组c中。
时间: 2024-03-23 20:42:04 浏览: 73
C语言程序设计-将两个两位数的正整数a、b合并形成一个整数放在c中;合并的方式是:将a数的十位和个位数依次放在c数的百位
5星 · 资源好评率100%
以下是使用 C 语言实现两个有序数组的归并排序:
```c
#include <stdio.h>
void merge(int a[], int b[], int c[], int len_a, int len_b) {
int i = 0, j = 0, k = 0;
// 每次比较 a[i] 和 b[j],将较小的放入 c[k] 中
while (i < len_a && j < len_b) {
if (a[i] < b[j]) {
c[k] = a[i];
i++;
}
else {
c[k] = b[j];
j++;
}
k++;
}
// 将剩余元素放入 c 中
while (i < len_a) {
c[k] = a[i];
i++;
k++;
}
while (j < len_b) {
c[k] = b[j];
j++;
k++;
}
}
int main() {
int a[] = {6, 4, 2};
int b[] = {5, 3, 1};
int len_a = sizeof(a) / sizeof(a[0]);
int len_b = sizeof(b) / sizeof(b[0]);
int c[len_a + len_b]; // 定义 c 数组,长度为 len_a + len_b
merge(a, b, c, len_a, len_b);
printf("Merged array c: ");
for (int i = 0; i < len_a + len_b; i++) {
printf("%d ", c[i]);
}
printf("\n");
return 0;
}
```
运行程序后,输出结果为:
```
Merged array c: 1 2 3 4 5 6
```
在这个例子中,我们首先定义了两个有序数组 a 和 b,然后分别计算它们的长度。接着,我们定义了一个长度为 len_a + len_b 的数组 c,用于存放归并后的结果。最后,我们调用了 merge 函数,将有序数组 a 和 b 归并到数组 c 中,并输出了最终的结果。
需要注意的是,在 C 语言中,我们需要手动计算数组的长度,因为数组名只是指向数组首元素的指针,没有包含数组长度的信息。
阅读全文