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:
RestTemplate Post Request with JSON
Jackson – Bidirectional Relationships
Spring REST API + OAuth2 + Angular
HTTP Authentification and CGI/Servlet
Java Program to Implement Sorting of Less than 100 Numbers in O(n) Complexity
Registration – Activate a New Account by Email
Java Program to Implement PriorityBlockingQueue API
Java Program to Implement EnumMap API
New Features in Java 13
Spring Webflux with Kotlin
Java List UnsupportedOperationException
Java Program to Implement Control Table
Thao tác với tập tin và thư mục trong Java
So sánh ArrayList và LinkedList trong Java
Java Program to Solve any Linear Equation in One Variable
Debug a HttpURLConnection problem
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Introduction to Using Thymeleaf in Spring
Finding Max/Min of a List or Collection
Java Program to Implement Bucket Sort
Static Content in Spring WebFlux
A Quick Guide to Spring Cloud Consul
Java Program to Implement ConcurrentHashMap API
Java Program to Check whether Undirected Graph is Connected using DFS
Lấy ngày giờ hiện tại trong Java
Working with Kotlin and JPA
Lớp Arrarys trong Java (Arrays Utility Class)
Câu lệnh điều khiển vòng lặp trong Java (break, continue)
Returning Image/Media Data with Spring MVC
Find the Registered Spring Security Filters
Simplify the DAO with Spring and Java Generics
Hướng dẫn Java Design Pattern – Chain of Responsibility