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 Describe the Representation of Graph using Incidence List
Getting Started with Custom Deserialization in Jackson
Introduction to Using FreeMarker in Spring MVC
Introduction to Spring Cloud CLI
Java Program to Implement Pollard Rho Algorithm
Add Multiple Items to an Java ArrayList
Merging Streams in Java
Java Program to Perform Polygon Containment Test
Base64 encoding và decoding trong Java 8
Java Program to Check whether Undirected Graph is Connected using BFS
Programmatic Transaction Management in Spring
Java Program to Implement Nth Root Algorithm
Custom Exception trong Java
Spring NoSuchBeanDefinitionException
Spring Security with Maven
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Spring Security Remember Me
Java Program to Implement Bubble Sort
Java Program to Implement Quick Sort with Given Complexity Constraint
Quick Guide to @RestClientTest in Spring Boot
Create Java Applet to Simulate Any Sorting Technique
Spring Boot - File Handling
Java Program to Implement Dijkstra’s Algorithm using Priority Queue
Cài đặt và sử dụng Swagger UI
Derived Query Methods in Spring Data JPA Repositories
4 tính chất của lập trình hướng đối tượng trong Java
Converting Java Date to OffsetDateTime
Java Program to Evaluate an Expression using Stacks
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Java Stream Filter with Lambda Expression
Introduction to Spring Security Expressions
Functional Interface trong Java 8