在C语言中,merge函数用于合并两个有序数组。
函数原型如下:
void merge(int arr1[], int n1, int arr2[], int n2, int result[]);
参数解释:
arr1:第一个有序数组
n1:第一个有序数组的长度
arr2:第二个有序数组
n2:第二个有序数组的长度
result:合并后的有序数组
函数实现如下:
void merge(int arr1[], int n1, int arr2[], int n2, int result[]) {
int i = 0, j = 0, k = 0;
while (i < n1 && j < n2) {
if (arr1[i] <= arr2[j]) {
result[k] = arr1[i];
i++;
} else {
result[k] = arr2[j];
j++;
}
k++;
}
while (i < n1) {
result[k] = arr1[i];
i++;
k++;
}
while (j < n2) {
result[k] = arr2[j];
j++;
k++;
}
}
使用示例:
#include <stdio.h>
void merge(int arr1[], int n1, int arr2[], int n2, int result[]);
int main() {
int arr1[] = {1, 3, 5, 7};
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {2, 4, 6};
int n2 = sizeof(arr2) / sizeof(arr2[0]);
int result[n1 + n2];
merge(arr1, n1, arr2, n2, result);
printf("Merged array: ");
for (int i = 0; i < n1 + n2; i++) {
printf("%d ", result[i]);
}
return 0;
}
输出结果:
Merged array: 1 2 3 4 5 6 7
在上述示例中,我们定义了两个有序数组arr1和arr2,然后调用merge函数将它们合并成一个有序数组result。最后,我们使用循环打印出合并后的有序数组。