题解 | #有序序列合并#

有序序列合并

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

#include<stdio.h>
#include<malloc.h>
int main(void)
{
    int num1,num2;
    int *arr1,*arr2,*new;
    scanf("%d %d",&num1,&num2);
    arr1=(int *)malloc(sizeof(int)*num1);
    arr2=(int *)malloc(sizeof(int)*num2);
    new=(int *)malloc(sizeof(int)*(num1+num2));//定义一个新数组用来装合并后的元素
    for(int i=0;i<num1;i++)
        scanf("%d",&arr1[i]);
    for(int i=0;i<num2;i++)
        scanf("%d",&arr2[i]);
    int l=0,r=0;//定义两个下标,用来指向正在比较num1数组元素和num2数组元素,一开始从0开始
    int h=0;//定义new数组的计数下标
    while(l<num1&&r<num2)//两个数组中的元素比较,哪个小放进new数组中,直到有一个数组被比较完
    {
        if(arr1[l]<=arr2[r])
        {
            new[h]=arr1[l];
            h++;
            l++;
        }
        if(arr1[l]>arr2[r])
        {
            new[h]=arr2[r];
            h++;
            r++;
        }
    }
    while(l<num1)//比较完之后看arr1和arr2哪个数组元素还没复制到new数组中,则将其全部复制到new数组中
    {
        new[h]=arr1[l];
        h++;
        l++;
    }
    while(r<num2)
    {
        new[h]=arr2[r];
        h++;
        r++;
    }
    for(int i=0;i<num2+num1;i++)
        printf("%d ",new[i]);
    return 0;
}
全部评论

相关推荐

Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:05
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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