在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。最后,我們使用循環打印出合并后的有序數組。