给两个数组有序融合为一个数组C语言完整代码
时间: 2023-10-05 17:13:00 浏览: 84
以下是将两个有序数组合并为一个有序数组的C语言完整代码:
```c
#include <stdio.h>
void merge(int arr1[], int arr2[], int m, int n, int merged_arr[]) {
int i = 0, j = 0, k = 0;
while (i < m && j < n) {
if (arr1[i] < arr2[j]) {
merged_arr[k++] = arr1[i++];
} else {
merged_arr[k++] = arr2[j++];
}
}
while (i < m) {
merged_arr[k++] = arr1[i++];
}
while (j < n) {
merged_arr[k++] = arr2[j++];
}
}
int main() {
int arr1[] = {1, 3, 5, 7, 9};
int arr2[] = {2, 4, 6, 8, 10};
int m = sizeof(arr1) / sizeof(arr1[0]);
int n = sizeof(arr2) / sizeof(arr2[0]);
int merged_arr[m + n];
merge(arr1, arr2, m, n, merged_arr);
printf("Merged array: ");
for (int i = 0; i < m + n; i++) {
printf("%d ", merged_arr[i]);
}
printf("\n");
return 0;
}
```
该代码中的 `merge` 函数将两个有序数组 `arr1` 和 `arr2` 合并为一个有序数组 `merged_arr`。它使用三个指针 `i`、`j` 和 `k` 分别在 `arr1`、`arr2` 和 `merged_arr` 中遍历。当 `arr1[i]` 小于 `arr2[j]` 时,将 `arr1[i]` 复制到 `merged_arr[k]` 中,并将 `i` 和 `k` 分别加 1;否则,将 `arr2[j]` 复制到 `merged_arr[k]` 中,并将 `j` 和 `k` 分别加 1。最后,将剩余元素从 `arr1` 或 `arr2` 复制到 `merged_arr` 中。
在 `main` 函数中,我们声明两个有序数组 `arr1` 和 `arr2`,并计算它们的大小 `m` 和 `n`。我们还声明一个大小为 `m + n` 的 `merged_arr` 数组,用于存储合并后的有序数组。然后,我们调用 `merge` 函数将 `arr1` 和 `arr2` 合并到 `merged_arr` 中,并打印结果。
阅读全文