用java编写一个求两个有序数组的中位数
时间: 2023-04-09 20:01:17 浏览: 120
好的,这是一个技术问题,我可以回答。可以使用归并排序的思想,将两个有序数组合并成一个有序数组,然后根据数组长度的奇偶性来确定中位数的位置,最后返回中位数即可。具体实现可以参考以下代码:
public 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++];
}
if ((m + n) % 2 == 0) {
return (nums[(m + n) / 2 - 1] + nums[(m + n) / 2]) / 2.0;
} else {
return nums[(m + n) / 2];
}
}
阅读全文