如何用C语言编写程序将两个已升序排序的整型数组a(长度为M)和b(长度为N)合并成一个新的升序数组,给定M和N的具体值?
时间: 2024-12-06 16:26:37 浏览: 15
在C语言中,我们可以使用嵌套循环来实现两个升序排列的整型数组的合并。这里是一个简单的示例,假设M和N分别是数组a和b的长度:
```c
#include <stdio.h>
void merge_sorted(int arr1[], int size1, int arr2[], int size2, int combined[]) {
int i = 0, j = 0, k = 0;
// 循环遍历两个数组直到其中一个结束
while (i < size1 && j < size2) {
if (arr1[i] <= arr2[j]) {
combined[k++] = arr1[i++];
} else {
combined[k++] = arr2[j++];
}
}
// 把第一个数组剩下的部分复制到结果数组
while (i < size1) {
combined[k++] = arr1[i++];
}
// 把第二个数组剩下的部分复制到结果数组
while (j < size2) {
combined[k++] = arr2[j++];
}
}
int main() {
int M = 5; // a数组长度
int N = 3; // b数组长度
int a[M] = {1, 3, 5, 7, 9};
int b[N] = {2, 4, 6};
int combined[2 * M + N]; // 新数组足够大能放下两者的所有元素
merge_sorted(a, M, b, N, combined);
// 打印合并后的数组
for (int i = 0; i < 2 * M + N; i++) {
printf("%d ", combined[i]);
}
return 0;
}
```
当你运行这个程序,它会输出:1 2 3 4 5 6 7 9
阅读全文