题解 | #有序序列合并#

有序序列合并

https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897


#include <stdio.h>

int main() {
    int n, m;
    // 读取 n 和 m 的值
    scanf("%d %d", &n, &m);
    
    // 初始化并读取数组 a
    int a[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    
    // 初始化并读取数组 b
    int b[m];
    for (int i = 0; i < m; i++) {   
        scanf("%d", &b[i]);
    }
    
    // 初始化合并数组 c
    int c[n + m];
    int i = 0, j = 0, k = 0;
    
    // 合并两个有序数组
    while (i < n && j < m) {
        if (a[i] <= b[j]) {
            c[k++] = a[i++];
        } else {
            c[k++] = b[j++];
        }
    }
    
    // 将数组 a 剩余元素加入 c
    while (i < n) {
        c[k++] = a[i++];
    }
    
    // 将数组 b 剩余元素加入 c
    while (j < m) {
        c[k++] = b[j++];
    }
    
    // 输出合并后的数组
    for (int i = 0; i < n + m; i++) {
        printf("%d", c[i]);
        if (i < n + m - 1) {
            printf(" ");
        }
    }
    printf("\n");
    
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务