java数组给出两个数组合并后找出中位数

例如:
在这里插入图片描述

 public static void main(String[] args) {
        /**
         * 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数
         */
        int[] nums1 = {1,3};
        int[] nums2 = {2,4};
        int a = nums1.length+nums2.length;
        int[] nums3 = new int[a];

        /*
        方法一
         */
  /*      //将数组1存储到新数组
        for (int i = 0; i <nums1.length ; i++) {
            nums3[i] = nums1[i];
        }
        //将数组2存储到新数组
        for (int i = 0; i <nums2.length ; i++) {
            nums3[nums3.length-1-i] = nums2[i];
        }
        //排序
        for (int i = 0; i < nums3.length-1 ; i++) {
            for (int j = 0; j < nums3.length-i-1 ; j++) {
                if(nums3[i]>nums3[i+1]){
                  int tem = nums3[i];
                    nums3[i]= nums3[i+1];
                    nums3[i+1]=tem;
                }
            }
        }*/

       /*
        方法二
         */
        int x =0;//数组一下标的
        int y = 0;//数组二下标的
        for (int i = 0; i<nums3.length ; i++) {
            if(y>=nums2.length||x<nums1.length && nums1[x]<=nums2[y]){
                nums3[i]=nums1[x++];
            }else {
                nums3[i]=nums2[y++];
            }
        }
        //调用方法遍历数组
        System.out.println(Arrays.toString(nums3));

        
        
        
        //进行中间值判断
        int b= nums3.length/2;
        if(nums3.length%2!=0){
            System.out.println(nums3[b]);
        }else {
            System.out.println((double)(nums3[b-1]+nums3[b])/2);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值