Java怎么寻找两个有序数组的中位数

2023-04-24 01:44:00 数组 有序 中位数

在Java中查找两个有序数组的中位数,可以使用合并排序的思想。首先,将两个有序数组合并成一个有序数组,然后再计算中位数。

合并排序的思想是将两个有序数组合并成一个有序数组,这里使用两个指针,一个指向第一个数组,一个指向第二个数组,比较两个指针指向的元素,将较小的元素放入新数组中,然后将指针向前移动,直到两个指针都到达末尾,此时新数组就是有序数组。

计算中位数的方法是,如果有序数组的元素个数为奇数,则中位数就是数组中间的元素;如果有序数组的元素个数为偶数,则中位数就是数组中间两个元素的平均值。

以上就是在Java中查找两个有序数组的中位数的思路,具体实现可以参考以下代码:

public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
    int m = nums1.length;
    int n = nums2.length;
    int[] nums = new int[m + n];
    int i = 0, j = 0, k = 0;
    while (i < m && j < n) {
        if (nums1[i] <= nums2[j]) {
            nums[k++] = nums1[i++];
        } else {
            nums[k++] = nums2[j++];
        }
    }
    while (i < m) {
        nums[k++] = nums1[i++];
    }
    while (j < n) {
        nums[k++] = nums2[j++];
    }
    int mid = (m + n) / 2;
    if ((m + n) % 2 == 0) {
        return (nums[mid] + nums[mid - 1]) / 2.0;
    } else {
        return nums[mid];
    }
}

以上就是如何使用Java查找两个有序数组的中位数的完整实现思路,可以参考上面的代码,实现自己的查找中位数的算法。

相关文章