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:
@Lookup Annotation in Spring
Spring Security – security none, filters none, access permitAll
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
Java CyclicBarrier vs CountDownLatch
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Converting String to Stream of chars
Default Password Encoder in Spring Security 5
Configure a RestTemplate with RestTemplateBuilder
Java Program to implement Bit Matrix
Guide to the Volatile Keyword in Java
Hướng dẫn Java Design Pattern – Memento
Check if a String is a Palindrome in Java
Checked and Unchecked Exceptions in Java
Java Program to Implement Queue using Linked List
Spring Data JPA and Null Parameters
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java Program to Check Whether a Weak Link i.e. Articulation Vertex Exists in a Graph
Concatenating Strings In Java
Spring WebClient and OAuth2 Support
Spring Boot - Securing Web Applications
New Features in Java 8
Spring Data Java 8 Support
Java Program to Generate All Subsets of a Given Set in the Lexico Graphic Order
Java Program to Implement Pairing Heap
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Spring REST API + OAuth2 + Angular
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Introduction to Spring Data MongoDB
Java Program to Implement String Matching Using Vectors
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Registration – Activate a New Account by Email
Java Program to Solve Travelling Salesman Problem for Unweighted Graph