题解 | #有序序列合并#

有序序列合并

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

#include <stdio.h>

void Merge(int arr1[1000], int arr2[1000], int arr3[2000], int n, int m)
{
    int i = 0;
    int j = 0;
    int k = 0;
    //进行合并
    while ((i < n)&&(j < m))
    {
        //比较大小
        if (arr1[i] <= arr2[j])
        {
            arr3[k++] = arr1[i++];
        }
        else
        {
            arr3[k++] = arr2[j++];
        }
    }
    if (i >= n)
    {
        while (j < m) 
        {
            arr3[k++] = arr2[j++];  
        } 
    }
    else 
    {
        while (i < n) 
        {
            arr3[k++] = arr1[i++];  
        } 
    }
}

int main() {
    int m = 0;  //第二行序列个数
    int n = 0;  //第一行序列个数
    //输入
    scanf("%d%d", &n, &m);
    int arr1[1000];  //数组1
    int arr2[1000];  //数组2
    int arr3[2000];  //整合数组
    int i = 0;
    //初始化数组1
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr1[i]);
    }
    //初始化数组2
    for (i = 0; i < m; i++)
    {
        scanf("%d", &arr2[i]);
    }
    //合并数组
    Merge(arr1, arr2, arr3, n, m);
    //输出
    for (i = 0; i < (m+n); i++)
        printf("%d ", arr3[i]);
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务