#include <stdio.h>

// 函数声明
void merge(int arrA[], int sizeA, int arrB[], int sizeB, int arrC[]);

// 主函数
int main() {
    // 有序数组
    int arrA[] = {12, 36, 89, 100};
    int arrB[] = {22, 43, 91, 112, 120};
    
    // 计算数组大小
    int sizeA = sizeof(arrA) / sizeof(arrA[0]);
    int sizeB = sizeof(arrB) / sizeof(arrB[0]);
    
    // 创建合并后的数组
    int arrC[sizeA + sizeB];

    // 合并数组
    merge(arrA, sizeA, arrB, sizeB, arrC);

    // 输出合并后的数组
    printf("Merged array: ");
    for (int i = 0; i < sizeA + sizeB; i++) {
        printf("%d ", arrC[i]);
    }
    printf("\n");

    return 0;
}

// 合并函数定义
void merge(int arrA[], int sizeA, int arrB[], int sizeB, int arrC[]) {
    int i = 0, j = 0, k = 0;

    // 合并两个有序数组
    while (i < sizeA && j < sizeB) {
        if (arrA[i] < arrB[j]) {
            arrC[k++] = arrA[i++];
        } else {
            arrC[k++] = arrB[j++];
        }
    }

    // 复制剩余元素
    while (i < sizeA) {
        arrC[k++] = arrA[i++];
    }
    while (j < sizeB) {
        arrC[k++] = arrB[j++];
    }
}
