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:
Converting Between Byte Arrays and Hexadecimal Strings in Java
Giới thiệu Google Guice – Injection, Scope
Java Program to Check whether Undirected Graph is Connected using BFS
Updating your Password
Java Program to Implement Euclid GCD Algorithm
Java Program to Implement Shoelace Algorithm
Encode/Decode to/from Base64
Java Program to Construct K-D Tree for 2 Dimensional Data
Guide to Java Instrumentation
Guide to the ConcurrentSkipListMap
Java Program to Implement Uniform-Cost Search
Spring Security Login Page with React
Java Program to Implement Johnson’s Algorithm
Lập trình mạng với java
Ignore Null Fields with Jackson
Java toString() Method
Java Program to Implement Graph Coloring Algorithm
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays
Java Program to Solve TSP Using Minimum Spanning Trees
Concatenating Strings In Java
Java InputStream to Byte Array and ByteBuffer
Java Program to Implement Sieve Of Eratosthenes
Java Program to Implement String Matching Using Vectors
How to Round a Number to N Decimal Places in Java
Consuming RESTful Web Services
Java Program to Solve any Linear Equation in One Variable
Lớp LinkedHashMap trong Java
Hướng dẫn Java Design Pattern – DAO
Iterable to Stream in Java
Guide to Guava Multimap
Extra Login Fields with Spring Security
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation