题解 | #有序序列合并#

有序序列合并

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;
}
全部评论

相关推荐

威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务