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:
Spring Boot - Securing Web Applications
Java Program to Generate All Subsets of a Given Set in the Lexico Graphic Order
Java Program to Check Cycle in a Graph using Topological Sort
Java Program to Implement Best-First Search
Injecting Prototype Beans into a Singleton Instance in Spring
Lớp Collectors trong Java 8
Guide to Java 8 groupingBy Collector
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
HttpClient Timeout
Java Program to Perform Searching Using Self-Organizing Lists
Tính đóng gói (Encapsulation) trong java
A Guide to the ResourceBundle
@Order in Spring
Guide to Spring 5 WebFlux
Spring Boot - Runners
Java Program to Find Basis and Dimension of a Matrix
Spring Security Authentication Provider
Spring MVC Content Negotiation
Spring Webflux with Kotlin
New Stream Collectors in Java 9
Map Serialization and Deserialization with Jackson
Java Program to Check Whether an Input Binary Tree is the Sub Tree of the Binary Tree
Java Program to Implement Horner Algorithm
Java Program to Implement Cubic convergence 1/pi Algorithm
Java Program to Implement VList
Java Program to Implement Circular Doubly Linked List
Java – Rename or Move a File
Mapping Nested Values with Jackson
Java Program to Generate a Sequence of N Characters for a Given Specific Case
Java Program to Implement Hash Tables Chaining with Binary Trees
Spring WebClient and OAuth2 Support
wait() and notify() Methods in Java