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:
HttpAsyncClient Tutorial
Using Spring ResponseEntity to Manipulate the HTTP Response
Predicate trong Java 8
Lập trình hướng đối tượng (OOPs) trong java
Copy a List to Another List in Java
Chuyển đổi giữa các kiểu dữ liệu trong Java
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Refactoring Design Pattern với tính năng mới trong Java 8
New Features in Java 12
Java Program to Implement Disjoint Sets
Display Auto-Configuration Report in Spring Boot
Lớp TreeMap trong Java
Guide to Java 8’s Collectors
Getting Started with Custom Deserialization in Jackson
New Features in Java 8
Java Program for Topological Sorting in Graphs
Java Program to Implement Best-First Search
Spring Boot Annotations
Java 14 Record Keyword
Java Program to Perform Searching Using Self-Organizing Lists
Lập trình đa luồng trong Java (Java Multi-threading)
Java Program to Represent Graph Using 2D Arrays
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Java Program to Implement Expression Tree
Working with Tree Model Nodes in Jackson
Thao tác với tập tin và thư mục trong Java
Java Program to Implement Control Table
Spring Boot Gradle Plugin
Java Program to Implement Dijkstra’s Algorithm using Priority Queue
How to Add a Single Element to a Stream
Finding Max/Min of a List or Collection
Chuyển đổi Array sang ArrayList và ngược lại