Median of 2 Sorted Arrays of Equal Size
Understanding the Problem
The goal is to find the median of two sorted arrays of equal size.
Method 1: Simple Merge
This method merges the two arrays and finds the median.
def findMedianSortedArrays(arr1, arr2): merged = sorted(arr1 + arr2) n = len(merged) return (merged[n // 2 - 1] + merged[n // 2]) / 2.0 arr1 = [1, 3] arr2 = [2, 4] print("Median:", findMedianSortedArrays(arr1, arr2))
Output:
Median: 2.5
Method 2: Binary Search
This method uses binary search to find the median efficiently.
def findMedianSortedArrays(arr1, arr2): import sys if len(arr1) > len(arr2): arr1, arr2 = arr2, arr1 x, y = len(arr1), len(arr2) low, high = 0, x while low <= high: partitionX = (low + high) // 2 partitionY = (x + y + 1) // 2 - partitionX maxLeftX = -sys.maxsize if partitionX == 0 else arr1[partitionX - 1] minRightX = sys.maxsize if partitionX == x else arr1[partitionX] maxLeftY = -sys.maxsize if partitionY == 0 else arr2[partitionY - 1] minRightY = sys.maxsize if partitionY == y else arr2[partitionY] if maxLeftX <= minRightY and maxLeftY <= minRightX: if (x + y) % 2 == 0: return (max(maxLeftX, maxLeftY) + min(minRightX, minRightY)) / 2.0 else: return max(maxLeftX, maxLeftY) elif maxLeftX > minRightY: high = partitionX - 1 else: low = partitionX + 1 arr1 = [1, 3] arr2 = [2, 4] print("Median:", findMedianSortedArrays(arr1, arr2))
Output:
Median: 2.5
Method 3: Using a Combined Array
This method combines the arrays and finds the median directly.
def findMedianSortedArrays(arr1, arr2): combined = arr1 + arr2 combined.sort() n = len(combined) return (combined[n // 2 - 1] + combined[n // 2]) / 2.0 arr1 = [1, 3] arr2 = [2, 4] print("Median:", findMedianSortedArrays(arr1, arr2))
Output:
Median: 2.5