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:
Refactoring Design Pattern với tính năng mới trong Java 8
Spring Boot Security Auto-Configuration
Spring Data MongoDB Transactions
Spring Data – CrudRepository save() Method
Giới thiệu Aspect Oriented Programming (AOP)
Template Engines for Spring
Java Program to Implement Euler Circuit Problem
Java Program to Implement RoleUnresolvedList API
Exploring the New Spring Cloud Gateway
A Guide to TreeMap in Java
Creating a Web Application with Spring 5
Java Program to Implement ConcurrentSkipListMap API
How To Serialize and Deserialize Enums with Jackson
Spring Boot Actuator
Feign – Tạo ứng dụng Java RESTful Client
Java Program to Find Nearest Neighbor for Dynamic Data Set
ETags for REST with Spring
Java Program to Implement Find all Forward Edges in a Graph
A Quick JUnit vs TestNG Comparison
Java Program to Implement the Checksum Method for Small String Messages and Detect
Chuyển đổi Array sang ArrayList và ngược lại
Exploring the Spring 5 WebFlux URL Matching
Java Program for Douglas-Peucker Algorithm Implementation
Java Program to Implement LinkedTransferQueue API
Java Program to Implement Triply Linked List
Java Program to Implement Iterative Deepening
Java Perform to a 2D FFT Inplace Given a Complex 2D Array
Wiring in Spring: @Autowired, @Resource and @Inject
Java Program to Implement Borwein Algorithm
Java Program to Check whether Graph is a Bipartite using BFS
Java 9 Stream API Improvements
Java Program to Solve a Matching Problem for a Given Specific Case