Java Program to Perform Uniform Binary Search

This is a java program to perform uniform binary search technique. It uses a lookup table to update a single array index, rather than taking the midpoint of an upper and a lower bound on each iteration; therefore, it is optimized for architectures (such as Knuth’s MIX) on which a table look-up is generally faster than an addition and a shift, and many searches will be performed on the same array, or on several arrays of the same length.

Here is the source code of the Java Program to Perform Uniform Binary Search. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

//This is a java program to perform uniform binary search.
import java.util.Random;
import java.util.Scanner;
 
public class Uniform_Binary_Search 
{
    static int N = 10;
    static int[] sequence = new int[N];
    static int[] delta = new int[42];
 
    public static void sort() 
    {
        int i, j, temp;
        for (i = 1; i < N; i++) 
        {
            j = i;
            temp = sequence[i];
            while (j > 0 && temp < sequence[j - 1]) 
            {
                sequence[j] = sequence[j - 1];
                j = j - 1;
            }
            sequence[j] = temp;
        }
    }
 
    public static void make_delta(int N) 
    {
        System.out.println();
        int power = 1;
        int i = 0;
        do 
        {
            int half = power;
            power <<= 1;
            delta[i] = (N + half) / power;
        } while (delta[i++] != 0);
    }
 
    public static int unisearch(int key) 
    {
        int i = delta[0] - 1; /* midpoint of array */
        int d = 0;
 
        while (true) 
        {
            if (key == sequence[i])
                return i;
            else if (delta[d] == 0)
                return -1;
            else 
            {
                if (key < sequence[i])
                    i -= delta[++d];
                else
                    i += delta[++d];
            }
        }
    }
 
    public static void main(String args[]) 
    {
        Random random = new Random();
 
        for (int i = 0; i < N; i++)
            sequence[i] = Math.abs(random.nextInt(100));
        System.out.println("The sequence is :");
        sort();
        for (int i = 0; i < N; i++)
            System.out.print(sequence[i] + " ");
        //sort();
        make_delta(N);
 
        System.out.println("Enter the element to be searched: ");
        Scanner sc = new Scanner(System.in);
        int key = sc.nextInt();
        int p = unisearch(key);
        if (p > 0)
            System.out.println("Element found at position " + p);
        else
            System.out.println("Element doesn't exist");
        sc.close();
    }
}

Output:

$ javac Uniform_Binary_Search.java
$ java Uniform_Binary_Search
 
The sequence is :
12 13 20 24 27 32 63 64 74 82 
Enter the element to be searched: 
24
Element found at position 3
 
The sequence is :
0 30 31 32 37 48 51 58 78 87 
Enter the element to be searched: 
98
Element doesn't exist

Related posts:

Java Program to Implement Disjoint Set Data Structure
Java Program to Show the Duality Transformation of Line and Point
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
Java Program to Implement Binary Tree
Injecting Prototype Beans into a Singleton Instance in Spring
Java Program to Implement Sorted Array
Spring @RequestMapping New Shortcut Annotations
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Constructor Injection in Spring with Lombok
Hướng dẫn Java Design Pattern – Template Method
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
Rate Limiting in Spring Cloud Netflix Zuul
Spring Boot Gradle Plugin
StringBuilder vs StringBuffer in Java
Logging a Reactive Sequence
Java Program to Implement Expression Tree
Spring Security Authentication Provider
New Features in Java 8
OAuth 2.0 Resource Server With Spring Security 5
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Converting Between Byte Arrays and Hexadecimal Strings in Java
The DAO with JPA and Spring
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Một số nguyên tắc, định luật trong lập trình
Java Program to Compute Determinant of a Matrix
Working with Network Interfaces in Java
Apache Commons Collections OrderedMap
Java Program to Create a Random Graph Using Random Edge Generation
HttpClient Basic Authentication
Spring REST API + OAuth2 + Angular