题解 | #有序序列合并#

有序序列合并

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

#include <stdio.h>

/*/int main() 
{
    int n = 0;//第一个序列的个数
    int m = 0;//第二个序列的个数
    scanf("%d %d",&n,&m);
    int arr1[n];
    int arr2[m];
    int i = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%d",&arr1[i]);//输入第一个序列的元素
    }
    for(i = 0;i<m;i++)
    {   
        scanf("%d",&arr2[i]);//输入第二个序列的元素
    }
    //合并打印
    int j = 0;
    int k = 0;
    while(j<n&&k<m)
    {
        if(arr1[j]<arr2[k])
        {
            printf("%d ",arr1[j]);
            j++;
        }
        else
        {
            printf("%d ",arr2[k]);
            k++;
        }
    }
    if(j<n)
    {
        for(;j<n;j++)
        {
            printf("%d ",arr1[j]);
        }
    }
    else
    {
        for(;k<m;k++)
        {
            printf("%d ",arr2[k]);
        }
    }
    return 0;
}


/*/

int main() 
{
    int n = 0;//第一个序列的个数
    int m = 0;//第二个序列的个数
    scanf("%d %d",&n,&m);
    int arr1[n];
    int arr2[m];
    int arr3[m+n];
    int i = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%d",&arr1[i]);//输入第一个序列的元素
    }
    for(i = 0;i<m;i++)
    {   
        scanf("%d",&arr2[i]);//输入第二个序列的元素
    }
    //合并打印
    int j = 0;
    int k = 0;
    int r = 0;
    while(j<n&&k<m)
    {
        if(arr1[j]<arr2[k])
        {
            arr3[r++] = arr1[j];
            j++;
        }
        else
        {
            arr3[r++] = arr2[k];
            k++;
        }
    }
    if(j<n)
    {
        for(;j<n;j++)
        {
            arr3[r++] = arr1[j];
        }
    }
    else
    {
        for(;k<m;k++)
        {
           arr3[r++] = arr2[k];
        }
    }
    for(i = 0;i<m+n;i++)
    {
        printf("%d ",arr3[i]);
    }
    
    return 0;
}



全部评论

相关推荐

不愿透露姓名的神秘牛友
08-20 19:41
那一天的Java_J...:简历完全流水账,学生思维很严重,还有很大的优化空间,可以多看看牛客的简历。
点赞 评论 收藏
分享
已注销:bro不如吃顿疯狂星期四
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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