用C语言数组将两个有序的数组合并成一个有序数组
时间: 2024-12-20 22:19:19 浏览: 25
在C语言中,将两个已排序的数组合并成一个新的有序数组,通常可以采用双指针法,分别指向两个输入数组的起始位置。以下是这种方法的一个基本示例:
```c
#include <stdio.h>
#define SIZE 10 // 假设数组大小
#define ARRAY_A_SIZE 5
#define ARRAY_B_SIZE 3
// 合并两个有序数组
void merge_sorted_arrays(int arrayA[], int arrayB[], int arrayA_size, int arrayB_size, int result[]) {
int i = 0, j = 0, k = 0;
while (i < arrayA_size && j < arrayB_size) {
if (arrayA[i] <= arrayB[j]) {
result[k++] = arrayA[i++];
} else {
result[k++] = arrayB[j++];
}
}
// 把剩余部分(如果有的话)添加到结果数组
while (i < arrayA_size) {
result[k++] = arrayA[i++];
}
while (j < arrayB_size) {
result[k++] = arrayB[j++];
}
}
int main() {
int arrayA[ARRAY_A_SIZE] = {1, 3, 5, 7, 9}; // 第一个有序数组
int arrayB[ARRAY_B_SIZE] = {2, 4, 6}; // 第二个有序数组
int result[ARRAY_A_SIZE + ARRAY_B_SIZE]; // 结果数组
// 合并数组
merge_sorted_arrays(arrayA, arrayB, ARRAY_A_SIZE, ARRAY_B_SIZE, result);
// 打印合并后的数组
printf("Sorted merged array: ");
for (int i = 0; i < ARRAY_A_SIZE + ARRAY_B_SIZE; i++) {
printf("%d ", result[i]);
}
return 0;
}
```
这个程序首先比较两个数组的当前元素,选择较小的那个放入结果数组,然后移动对应的指针。当其中一个数组的所有元素都加入结果后,再将另一个数组的剩余元素依次添加。
阅读全文