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:
Java Program to Find the Shortest Path Between Two Vertices Using Dijkstra’s Algorithm
Spring REST API + OAuth2 + Angular (using the Spring Security OAuth legacy stack)
Java TreeMap vs HashMap
Testing in Spring Boot
Java Program to Find Transitive Closure of a Graph
HttpClient 4 Cookbook
REST Web service: Basic Authentication trong Jersey 2.x
Spring Boot Gradle Plugin
Toán tử trong java
Java Program to Implement Dijkstra’s Algorithm using Priority Queue
Java Program to Find the Minimum value of Binary Search Tree
Java Program to Check Cycle in a Graph using Topological Sort
Làm thế nào tạo instance của một class mà không gọi từ khóa new?
Java Program to Find the Longest Path in a DAG
Java Stream Filter with Lambda Expression
The Registration API becomes RESTful
Concrete Class in Java
Overview of Spring Boot Dev Tools
Using the Not Operator in If Conditions in Java
Setting Up Swagger 2 with a Spring REST API
Java Program to Create a Minimal Set of All Edges Whose Addition will Convert it to a Strongly Conne...
Spring Boot - Batch Service
Spring AMQP in Reactive Applications
Java Program to Implement Stack API
OAuth2 Remember Me with Refresh Token
Java Program to Implement Weight Balanced Tree
Java Program to Implement Leftist Heap
Java Program to Implement ConcurrentSkipListMap API
Get and Post Lists of Objects with RestTemplate
OAuth 2.0 Resource Server With Spring Security 5
Implementing a Binary Tree in Java
Java Program to Compute Cross Product of Two Vectors