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:
Spring Boot - Twilio
Spring Security with Maven
Deploy a Spring Boot WAR into a Tomcat Server
A Guide to WatchService in Java NIO2
Spring Security – security none, filters none, access permitAll
Assert an Exception is Thrown in JUnit 4 and 5
Java Program to Implement Hash Tables with Linear Probing
Java Program to Perform Uniform Binary Search
Java Program to Implement Binary Heap
Multipart Upload with HttpClient 4
Spring Security OAuth Login with WebFlux
Java Program to Perform Preorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Mapping Nested Values with Jackson
Java Byte Array to InputStream
HttpClient 4 Cookbook
Guide to the Fork/Join Framework in Java
Java Program to find the maximum subarray sum using Binary Search approach
Spring Boot - Service Components
Java Program to Implement K Way Merge Algorithm
Practical Java Examples of the Big O Notation
Java Program to Search for an Element in a Binary Search Tree
Database Migrations with Flyway
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
Java Program to implement Bit Matrix
Spring MVC Tutorial
Mảng (Array) trong Java
Base64 encoding và decoding trong Java 8
The Guide to RestTemplate
Check If a File or Directory Exists in Java
Java Program to Implement wheel Sieve to Generate Prime Numbers Between Given Range