Java Program to Implement Interpolation Search Algorithm

This is a Java Program to Implement Interpolation Search Algorithm. Interpolation search (sometimes referred to as extrapolation search) is an algorithm for searching for a given key value in an indexed array that has been ordered by the values of the key. On average the interpolation search makes about log(log(n)) comparisons (if the elements are uniformly distributed), where n is the number of elements to be searched. In the worst case (for instance where the numerical values of the keys increase exponentially) it can make up to O(n) comparisons.
In interpolation-sequential search, interpolation is used to find an item near the one being searched for, then linear search is used to find the exact item.

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

/**
 ** Java Program to Implement Interpolation Search Algorithm
 **/
 
import java.util.Scanner;
 
/** Class InterpolationSearch **/
public class InterpolationSearch
{
    /** interpolationSearch function **/
    public static int interpolationSearch(int[] sortedArray, int toFind)
    {
        int low = 0;
        int high = sortedArray.length - 1;
        int mid;
        while (sortedArray[low] <= toFind && sortedArray[high] >= toFind) 
        {
            if (sortedArray[high] - sortedArray[low] == 0)
                return (low + high)/2;
            /** out of range is possible  here **/
             mid = low + ((toFind - sortedArray[low]) * (high - low)) / (sortedArray[high] - sortedArray[low]);  
 
             if (sortedArray[mid] < toFind)
                 low = mid + 1;
             else if (sortedArray[mid] > toFind)
                 high = mid - 1;
             else
                 return mid;
        }
        if (sortedArray[low] == toFind)
            return low;
           /** not found **/
        else
            return -1; 
    }    
    /** Main method **/
    public static void main(String[] args) 
    {
        Scanner scan = new Scanner( System.in );        
        System.out.println("Interpolation Search Test\n");
        int n, i;
        /** Accept number of elements **/
        System.out.println("Enter number of integer elements");
        n = scan.nextInt();
        /** Create integer array on n elements **/
        int arr[] = new int[ n ];
        /** Accept elements **/
        System.out.println("\nEnter "+ n +" sorted integer elements");
        for (i = 0; i < n; i++)
            arr[i] = scan.nextInt();
        System.out.println("\nEnter element to search for : ");
        int key = scan.nextInt();
 
        int result = interpolationSearch(arr, key);
 
        if (result == -1)
            System.out.println("\n"+ key +" element not found");
        else
            System.out.println("\n"+ key +" elemnt found at position "+ result);
 
    }    
}
Interpolation Search Test
 
Enter number of integer elements
10
 
Enter 10 sorted integer elements
12 24 36 48 60 72 84 96 108 120
 
Enter element to search for :
24
 
24 elemnt found at position 1

Related posts:

Injecting Prototype Beans into a Singleton Instance in Spring
Java Program to Implement Bresenham Line Algorithm
Queue và PriorityQueue trong Java
Format ZonedDateTime to String
Java Program to Implement Merge Sort on n Numbers Without tail-recursion
Java equals() and hashCode() Contracts
Java Program to Perform Searching in a 2-Dimension K-D Tree
Hướng dẫn Java Design Pattern – Memento
Java Program to Implement Triply Linked List
Sending Emails with Java
Java Program to Implement Bloom Filter
Lớp Arrarys trong Java (Arrays Utility Class)
Java Program to Check whether Graph is Biconnected
Converting a List to String in Java
Spring Boot - Creating Docker Image
Java Program to Implement Sorted Vector
New Stream Collectors in Java 9
Hướng dẫn Java Design Pattern – Service Locator
Spring Web Annotations
Java Program to Delete a Particular Node in a Tree Without Using Recursion
Java Program to Implement Queue using Two Stacks
Removing Elements from Java Collections
A Guide to Iterator in Java
Java Program to Check Multiplicability of Two Matrices
Rate Limiting in Spring Cloud Netflix Zuul
Disable Spring Data Auto Configuration
Java Program to Check whether Undirected Graph is Connected using BFS
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Java Program to Apply Above-Below-on Test to Find the Position of a Point with respect to a Line
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Java Program to Describe the Representation of Graph using Incidence List
Java Program to Implement Binary Search Tree