实现两有序数组的合并仍为新有序数组,且不对新数组排序的最简单方法

两升序数组

    int a[10]={2,5,6,7,9,10,15,17,20,21};
    int b[10]={12,14,16,17,19,22,25,27,28,30};

合并为有序数组后:
这里写图片描述
代码实现:

#include<stdio.h>
int main(void)
{
    int a[10]={2,5,6,7,9,10,15,17,20,21};
    int b[10]={12,14,16,17,19,22,25,27,28,30};
    int c[20];
    int i,t,j;
    t=j=0;
    for(i=0;i<20;)//可以保证c只有20个元素
    {
        while(((a[t]<=b[j])||(j==10))&&t<=9)
            {
            c[i]=a[t++];
            printf("%d ",c[i++]);
            }
        while(((b[j]<=a[t])||(t==10))&&j<=9)
            {
            c[i]=b[j++];
            printf("%d ",c[i++]);
            }  
    }
}

注意:

  1. 外层循环保证i<20使c只有二十个元素并不能让i再自增
  2. a数组的元素加入到新数组的条件是,a[t]<=b[j] 或b数组已经全部放入前提是t小于10
  3. b数组的元素加入到新数组的条件是,a[t]>=b[j] 或a数组已经全部放入前提是j小于10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值