写一段C语言,有序数组合并,数组 arr1 和 arr2 中存放按照升序排列的元素,将数组 arr1 和 arr2 中的元素合并到数组 arr3 中,要求合并之后的数组 arr3 中的元素依然保持为升序。
时间: 2024-09-22 15:08:39 浏览: 46
在C语言中,你可以使用双指针法来合并两个有序数组到第三个数组,这里是一个简单的示例:
```c
#include <stdio.h>
void merge_sorted_arrays(int arr1[], int arr2[], int m, int n, int arr3[]) {
int i = 0, j = 0, k = 0; // 初始化指针i, j分别指向arr1和arr2,k指向arr3
while (i < m && j < n) { // 当arr1和arr2仍有元素未处理
if (arr1[i] <= arr2[j]) { // 如果arr1的元素小于等于arr2的元素
arr3[k++] = arr1[i++]; // 将arr1的元素放入arr3,并移动指针
} else {
arr3[k++] = arr2[j++]; // 否则,将arr2的元素放入arr3,并移动指针
}
}
// 将剩余的arr1元素添加到arr3
while (i < m) {
arr3[k++] = arr1[i++];
}
// 将剩余的arr2元素添加到arr3
while (j < n) {
arr3[k++] = arr2[j++];
}
}
int main() {
int arr1[] = {1, 3, 5};
int m = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {2, 4, 6};
int n = sizeof(arr2) / sizeof(arr2[0]);
int arr3[m + n]; // 创建足够大的arr3来存储合并后的数组
merge_sorted_arrays(arr1, arr2, m, n, arr3);
printf("合并后的数组 arr3: ");
for (int i = 0; i < m + n; i++) {
printf("%d ", arr3[i]); // 打印结果
}
return 0;
}
```
运行这段代码,你会得到合并后的升序数组 `arr3`。
阅读全文