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:
Functional Interface trong Java 8
Java Program to Implement Interpolation Search Algorithm
Java Program to Implement Find all Back Edges in a Graph
Java Program to Describe the Representation of Graph using Adjacency Matrix
Using JWT with Spring Security OAuth
Java Program to Generate a Sequence of N Characters for a Given Specific Case
Serialization và Deserialization trong java
Spring Cloud AWS – RDS
Giới thiệu Google Guice – Binding
Converting a Stack Trace to a String in Java
A Custom Data Binder in Spring MVC
Java InputStream to String
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
Guide to Java 8’s Collectors
The Registration Process With Spring Security
Java Program to Implement CopyOnWriteArraySet API
Hướng dẫn Java Design Pattern – Visitor
Comparing Two HashMaps in Java
Java InputStream to String
Quick Guide to the Java StringTokenizer
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Java Program to Implement Floyd Cycle Algorithm
Beans and Dependency Injection
Receive email using POP3
Java Program to Implement Stack using Linked List
Simplify the DAO with Spring and Java Generics
Hướng dẫn Java Design Pattern – Service Locator
How to Get All Spring-Managed Beans?
Configure a RestTemplate with RestTemplateBuilder
Java Program to Find Strongly Connected Components in Graphs
Spring Boot - Service Components