温馨提示×

c语言merge函数如何使用

小亿
204
2023-06-29 11:41:44
栏目: 编程语言

在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。最后,我们使用循环打印出合并后的有序数组。

0