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:

Create a Custom Auto-Configuration with Spring Boot
Java Program to Implement Fisher-Yates Algorithm for Array Shuffling
Period and Duration in Java
Add Multiple Items to an Java ArrayList
Divide and Conquer Algorithm
The StackOverflowError in Java
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Java Program to Implement Flood Fill Algorithm
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Java Program to Implement Sorted Array
Hướng dẫn Java Design Pattern – Factory Method
Java Program to Construct a Random Graph by the Method of Random Edge Selection
Java Program to Implement Hash Tree
Removing all Nulls from a List in Java
Model, ModelMap, and ModelAndView in Spring MVC
The HttpMediaTypeNotAcceptableException in Spring MVC
Spring Boot - Flyway Database
Giới thiệu Google Guice – Dependency injection (DI) framework
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Guide to UUID in Java
Java Program to Implement Stack
Database Migrations with Flyway
Intro to the Jackson ObjectMapper
Annotation trong Java 8
Spring RestTemplate Request/Response Logging
Java Program to Implement Max-Flow Min-Cut Theorem
DynamoDB in a Spring Boot Application Using Spring Data
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
Java Program to Implement Sieve Of Eratosthenes
How to Delay Code Execution in Java