溫馨提示×

c語言merge函數(shù)如何使用

小億
209
2023-06-29 11:41:44
欄目: 編程語言

在C語言中,merge函數(shù)用于合并兩個有序數(shù)組。

函數(shù)原型如下:

void merge(int arr1[], int n1, int arr2[], int n2, int result[]);

參數(shù)解釋:

  • arr1:第一個有序數(shù)組

  • n1:第一個有序數(shù)組的長度

  • arr2:第二個有序數(shù)組

  • n2:第二個有序數(shù)組的長度

  • result:合并后的有序數(shù)組

函數(shù)實現(xiàn)如下:

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;
}

輸出結(jié)果:

Merged array: 1 2 3 4 5 6 7

在上述示例中,我們定義了兩個有序數(shù)組arr1和arr2,然后調(diào)用merge函數(shù)將它們合并成一個有序數(shù)組result。最后,我們使用循環(huán)打印出合并后的有序數(shù)組。

0