Java Program to find the number of occurrences of a given number using Binary Search approach

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 Implement Doubly Linked List
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Guide to the Java Queue Interface
Java Program to Implement Extended Euclid Algorithm
Một số ký tự đặc biệt trong Java
Java Program to Generate All Possible Combinations of a Given List of Numbers
Java Program to implement Array Deque
How to Get All Spring-Managed Beans?
A Guide to Spring Boot Admin
OAuth2 for a Spring REST API – Handle the Refresh Token in AngularJS
Java Program to find the maximum subarray sum using Binary Search approach
Implementing a Runnable vs Extending a Thread
Primitive Type Streams in Java 8
Giới thiệu thư viện Apache Commons Chain
Injecting Prototype Beans into a Singleton Instance in Spring
Java Program to Solve Knapsack Problem Using Dynamic Programming
HttpClient 4 – Send Custom Cookie
Default Password Encoder in Spring Security 5
Introduction to Spring Boot CLI
Removing all Nulls from a List in Java
Java Program to Compute Discrete Fourier Transform Using the Fast Fourier Transform Approach
Java Program to Find Nearest Neighbor for Dynamic Data Set
Chuyển đổi từ HashMap sang ArrayList
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
Spring Boot Security Auto-Configuration
ClassNotFoundException vs NoClassDefFoundError
Java – Reader to InputStream
Spring Security 5 for Reactive Applications
Java Program to Implement Regular Falsi Algorithm
Sort a HashMap in Java
Extra Login Fields with Spring Security
Java Program to Implement Unrolled Linked List