已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A 0​ ,A 1​ ,⋯,A N−1​ 的中位数指A (N−1)/2​ 的值,即第⌊(N+

 

#include<stdio.h>

int  comparision(int N,int arr1[],int arr2[])

{

    int arr3[2*N];                                       //compare to get the result

    int i=0,j=0,k=0;

    while(i<N&&j<N)

    {

      if(arr1[i]<=arr2[j])

      arr3[k++]=arr1[i++];

      else {                                            //add one and two into the new list

        arr3[k++]=arr2[j++];                        

      }

    }

    while(i<N)                                             //add the rest

    {

        arr3[k++]=arr1[i++];

    }

    while(j<N)

    {

        arr3[k++]=arr2[j++];                                //add the  rest

    }

    int middle=(2*N-1)/2;

    int result=arr3[middle];                                 //get the middle

    return result;

 }

int main()

{

    int N;                   //input and output

    scanf("%d",&N);

    int a[N];

    int b[N];

   

    for(int i=0;i<N;i++)

    {

        scanf("%d",&a[i]);

       

    }

    for(int i=0;i<N;i++)

    {

        scanf("%d",&b[i]);

    }

    int middle=comparision(N,a,b);       //use the function

    printf("%d",middle);

    return 0;

}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值