给俩个有序数组(从小到大),判断两者中全部元素的中位数

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int nums1Size = 2,nums2Size = 2;
	int nums1[2]={1,2},nums2[2]={3,4};
	double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size);
	double b=findMedianSortedArrays(nums1, nums1Size,nums2, nums2Size);
    printf("%lf",b);
} 
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
            int all = nums1Size + nums2Size;
            int i=0,j=0,k=0;
            int* nums3=(int* )malloc(sizeof(int)*all);//创一个空间 
            //将两数组中的数放入第三个数组中 
            while(i<nums1Size && j<nums2Size)
            {
                    if(*(nums1+i)<=*(nums2+j)){
                        nums3[k++] = *(nums1+i);
                        j--; 
                    }   
                    else{
                        nums3[k++] = *(nums2+j);
                        i--;
                    }
                    i++;
                    j++;
            }
			//补上剩下的数 
            if(nums1Size <= i){
                while(nums2Size > j){
                     nums3[k++] = *(nums2+j);
                     j++;
                }
            }
            else if(nums2Size <= j){
                while(nums1Size > i){
                      nums3[k++] = *(nums1+i);
                      i++;
                }
            }   
        if(all%2 != 0){                  //奇数
              return nums3[(all-1)/2];
        }   
        else{             //偶数
              double midage = (double)(nums3[all/2]+nums3[(all-2)/2])/2;
              return midage; 
        } 
        return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值