4-寻找两个正序数组的中位数

题目:两个正序数组,找出他们的中位数(中间位置的数),算法的时间复杂度应该为 O(log (m+n))。

1.将两个数组组成一个新的数组,

int[] allArry = new int[nums1.length + nums2.length];
System.arraycopy(nums1, 0, allArry, 0, nums1.length);
System.arraycopy(nums2, 0, allArry, nums1.length, nums2.length);

2.将新数组中的元素排序(从小到大),

Arrays.sort(allArry);

3.用二分查找法,找出中位数

if (allArry.length % 2 == 0) {
            int sum = allArry[allArry.length / 2] + allArry[(allArry.length / 2) - 1];
            double result = sum / 2.;
            return result;
        } else {
            double result = (double) allArry[allArry.length / 2];
            return result;
        }

本文作者:月亮新星

本文链接:https://www.cnblogs.com/moon-new-star/p/18198977

版权声明:本作品采用月亮新星许可协议进行许可。

posted @   月亮新星  阅读(12)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开