Java Online Compiler
Example: Median of Two Sorted Arrays - Merge and Find in Java
C
C++
C#
Java
Python
PHP
Main.java
STDIN
Run
// Median of Two Sorted Arrays - Merge and Find import java.util.Arrays; public class Main { public static void main(String[] args) { // Example 1 int[] nums1_ex1 = {1, 3}; int[] nums2_ex1 = {2}; System.out.println("Input: nums1=" + Arrays.toString(nums1_ex1) + ", nums2=" + Arrays.toString(nums2_ex1)); System.out.println("Median (Merge and Find): " + findMedianSortedArraysMerge(nums1_ex1, nums2_ex1)); // Expected: 2.0 // Example 2 int[] nums1_ex2 = {1, 2}; int[] nums2_ex2 = {3, 4}; System.out.println("Input: nums1=" + Arrays.toString(nums1_ex2) + ", nums2=" + Arrays.toString(nums2_ex2)); System.out.println("Median (Merge and Find): " + findMedianSortedArraysMerge(nums1_ex2, nums2_ex2)); // Expected: 2.5 } public static double findMedianSortedArraysMerge(int[] nums1, int[] nums2) { // Step 1: Determine the total length of the combined arrays int m = nums1.length; int n = nums2.length; int totalLength = m + n; // Step 2: Create a new array to store the merged elements int[] merged = new int[totalLength]; int i = 0, j = 0, k = 0; // Pointers for nums1, nums2, and merged array // Step 3: Merge nums1 and nums2 into 'merged' while maintaining sorted order while (i < m && j < n) { if (nums1[i] <= nums2[j]) { merged[k++] = nums1[i++]; } else { merged[k++] = nums2[j++]; } } // Step 4: Copy remaining elements from nums1, if any while (i < m) { merged[k++] = nums1[i++]; } // Step 5: Copy remaining elements from nums2, if any while (j < n) { merged[k++] = nums2[j++]; } // Step 6: Calculate the median from the merged array if (totalLength % 2 == 1) { // Odd length: median is the middle element return (double) merged[totalLength / 2]; } else { // Even length: median is the average of the two middle elements int mid1 = merged[totalLength / 2 - 1]; int mid2 = merged[totalLength / 2]; return (double) (mid1 + mid2) / 2.0; } } }
Output
Clear
ADVERTISEMENTS