Java Program to Find the Median of two Sorted Arrays using Binary Search Approach

This is a Java Program to find median of two sorted arrays using binary search approach. In probability theory and statistics, a median is described as the number separating the higher half of a sample, a population, or a probability distribution, from the lower half. The median of a finite list of numbers can be found by arranging all the numbers from lowest value to highest value and picking the middle one. However size of both arrays must be equal. The time complexity of the following program is O (log n).

Here is the source code of the Java program to find median of two sorted arrays. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

/*
 * Java Program to Find the Median of two Sorted arrays using 
 * Binary Search Approach
 */
 
import java.util.Scanner;
 
public class MedianOfTwoSortedArrays
{
    public static void main(String[] args) 
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter number of elements in arrays");
        int N = scan.nextInt();
        int[] arr1 = new int[ N ];
        int[] arr2 = new int[ N ];
        System.out.println("Enter "+ N +" elements of array 1");
        for (int i = 0; i < N; i++)
            arr1[i] = scan.nextInt();
        System.out.println("Enter "+ N +" elements of array 2");
        for (int i = 0; i < N; i++)
            arr2[i] = scan.nextInt();
        int med = median(arr1, arr2);
        System.out.println("Median = "+ med);
     }
     public static int median(int[] arr1, int[] arr2)
     {
         int N = arr1.length;
         return median(arr1, 0, N -1 , arr2, 0, N - 1);
     }
     public static int median(int[] arr1, int l1, int h1, int[] arr2, int l2, int h2)
     {
         int mid1 = (h1 + l1 ) / 2;
         int mid2 = (h2 + l2 ) / 2;
 
         if (h1 - l1 == 1)
             return (Math.max(arr1[l1] , arr2[l2]) + Math.min(arr1[h1] , arr2[h2]))/2;
         else if (arr1[mid1] > arr2[mid2])
             return median(arr1, l1, mid1 , arr2, mid2 , h2);    
         else
             return median(arr1, mid1 , h1, arr2, l2 , mid2 );    
     }     
}
Enter number of elements in arrays
5
Enter 5 elements of array 1
1 12 15 26 38
Enter 5 elements of array 2
2 13 17 30 45
Median = 16

Related posts:

Java Program to Perform Sorting Using B-Tree
Introduction to Java Serialization
Guide to the Volatile Keyword in Java
HashMap trong Java hoạt động như thế nào?
Lập trình đa luồng với Callable và Future trong Java
Java Program to Generate a Graph for a Given Fixed Degree Sequence
@Order in Spring
Luồng Daemon (Daemon Thread) trong Java
SOAP Web service: Authentication trong JAX-WS
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
So sánh HashMap và HashSet trong Java
Java Program to Find a Good Feedback Edge Set in a Graph
Java Program to Generate a Random UnDirected Graph for a Given Number of Edges
String Joiner trong Java 8
Java Program to Check for balanced parenthesis by using Stacks
Java Program to Optimize Wire Length in Electrical Circuit
Hướng dẫn sử dụng Printing Service trong Java
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
RegEx for matching Date Pattern in Java
Java Program to find the number of occurrences of a given number using Binary Search approach
Java Program to Find kth Largest Element in a Sequence
A Guide to JUnit 5 Extensions
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
Java Program to Solve Knapsack Problem Using Dynamic Programming
Hướng dẫn Java Design Pattern – Iterator
Jackson – Decide What Fields Get Serialized/Deserialized
The Java 8 Stream API Tutorial
Java Program to Implement Suffix Tree
Java Program to Implement Queue using Two Stacks
Java Program to Implement Hash Tables with Linear Probing
The Thread.join() Method in Java
Java Program to Implement the MD5 Algorithm