# tính giá tri trung bình hai mảng

unknown
plain_text
25 days ago
1.7 kB
0
Indexable
Never
```// Online Java Compiler
// Use this editor to write, compile and run your Java code online

public class MedianOfTwoSortedArrays {

public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
int m = nums1.length;
int n = nums2.length;

if (m > n) {
int[] temp = nums1;
nums1 = nums2;
nums2 = temp;
int tempLen = m;
m = n;
n = tempLen;
}

int low = 0;
int high = m;

while (low <= high) {
int partitionX = (low + high) / 2;
int partitionY = (m + n + 1) / 2 - partitionX;

int maxX = (partitionX == 0) ? Integer.MIN_VALUE : nums1[partitionX - 1];
int minX = (partitionX == m) ? Integer.MAX_VALUE : nums1[partitionX];

int maxY = (partitionY == 0) ? Integer.MIN_VALUE : nums2[partitionY - 1];
int minY = (partitionY == n) ? Integer.MAX_VALUE : nums2[partitionY];

if (maxX <= minY && maxY <= minX) {
if ((m + n) % 2 == 0) {
return (double) (Math.max(maxX, maxY) + Math.min(minX, minY)) / 2;
} else {
return (double) Math.max(maxX, maxY);
}
} else if (maxX > minY) {
high = partitionX - 1;
} else {
low = partitionX + 1;
}
}

throw new IllegalArgumentException("Input arrays are not sorted.");
}

public static void main(String[] args) {
int[] nums1 = {3, 2, 3};
int[] nums2 = {8, 6};
System.out.println(findMedianSortedArrays(nums1, nums2)); // Output: 2.0
}
}
```