This is a Java Program to find number of occurences of a given number using binary search approach. The time complexity of the following program is O (log n).
Here is the source code of the Java program to find number of occurences of a given number using binary search approach. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/*
* Java Program to Find the Number of occurrences of a given Number using Binary Search approach
*/
import java.util.Scanner;
public class NumberOfOccurences
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter number of elements in sorted array");
int N = scan.nextInt();
int[] arr = new int[ N ];
/* Accept N elements */
System.out.println("Enter "+ N +" sorted elements");
for (int i = 0; i < N; i++)
arr[i] = scan.nextInt();
System.out.println("Enter number to find occurences");
int num = scan.nextInt();
int f = occur(arr, num);
if (f == -1)
System.out.println("No occurence");
else
System.out.println("Occurences = "+ f);
}
public static int occur(int[] arr, int num)
{
/* find first index */
int l1 = first(arr, num);
/* find last index */
int l2 = last(arr, num);
if (l1 == -1 || l2 == -1)
return -1;
return l2 - l1 + 1;
}
public static int first(int[] arr, int num)
{
if (arr[0] == num)
return 0;
int start = 0, end = arr.length - 1;
int mid = (start + end) / 2;
int flag = 0;
while (!(arr[mid] == num && arr[mid - 1] < arr[mid]))
{
if (start == end)
{
flag = 1;
break;
}
if (arr[mid] >= num)
end = mid - 1;
if (arr[mid] < num)
start = mid + 1;
mid = (start + end) / 2;
}
if (flag == 0)
return mid;
return -1;
}
public static int last(int[] arr, int num)
{
if (arr[arr.length - 1] == num)
return arr.length - 1;
int start = 0, end = arr.length - 1;
int mid = (start + end) / 2;
int flag = 0;
while (!(arr[mid] == num && arr[mid + 1] > arr[mid]))
{
if (start == end)
{
flag = 1;
break;
}
if (arr[mid] > num)
end = mid - 1;
if (arr[mid] <= num)
start = mid + 1;
mid = (start + end) / 2;
}
if (flag == 0)
return mid;
return -1;
}
}
Enter number of elements in sorted array 10 Enter 10 sorted elements 1 1 3 3 3 3 4 4 4 5 Enter number to find occurences 3 Occurences = 4 Enter number of elements in sorted array 10 Enter 10 sorted elements 1 1 3 3 3 3 4 4 4 5 Enter number to find occurences 5 Occurences = 1
Related posts:
Custom Thread Pools In Java 8 Parallel Streams
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Java equals() and hashCode() Contracts
OAuth2.0 and Dynamic Client Registration
Spring 5 Functional Bean Registration
Java Program to Implement CountMinSketch
Guide to the Synchronized Keyword in Java
Disable DNS caching
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Java Program to Create a Minimal Set of All Edges Whose Addition will Convert it to a Strongly Conne...
Spring Boot Application as a Service
Java Program to Implement Booth Algorithm
Java Program to Implement Stack using Two Queues
XML Serialization and Deserialization with Jackson
Java Program to Solve a Matching Problem for a Given Specific Case
Guide to Guava Multimap
Java Program to Implement Max-Flow Min-Cut Theorem
Java Program to Implement Depth-limited Search
Java Program to Solve Knapsack Problem Using Dynamic Programming
Integer Constant Pool trong Java
Java Program to Implement Stack using Linked List
Java Program to Implement Expression Tree
A Guide to Java HashMap
Spring NoSuchBeanDefinitionException
Introduction to Spring Data REST
Spring Boot - Tomcat Port Number
Giới thiệu JDBC Connection Pool
Removing all Nulls from a List in Java
Guide to PriorityBlockingQueue in Java
Java Program to Check whether Undirected Graph is Connected using BFS
Java Program to Implement Skip List
Introduction to Eclipse Collections