有两个长度均为n的元素不重复的有序数组,请计算这两个有序数组合并后的中位数 Java代码
时间: 2024-10-20 19:12:08 浏览: 16
当你有两个长度相同的有序数组A和B,想要合并它们并找到中位数,你可以按照以下步骤在Java中编写代码:
首先,我们需要创建一个新的数组C,将两个输入数组的内容合并到一起。然后根据数组的大小(n),我们可以确定中位数的位置。
如果 n 是偶数,那么中位数将是中间两个元素的平均值。如果是奇数,则中位数就是正中间的那个元素。
以下是简单的Java代码实现:
```java
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
// 合并两个数组
int[] merged = new int[nums1.length + nums2.length];
System.arraycopy(nums1, 0, merged, 0, nums1.length);
System.arraycopy(nums2, 0, merged, nums1.length, nums2.length);
// 对数组进行排序
Arrays.sort(merged);
// 计算中位数
int n = merged.length;
if (n % 2 == 0) { // 如果数组长度是偶数
return (double) (merged[n / 2 - 1] + merged[n / 2]) / 2.0;
} else { // 如果数组长度是奇数
return (double) merged[n / 2];
}
}
```
阅读全文