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:

HashSet trong java
Java Program to Check if a Point d lies Inside or Outside a Circle Defined by Points a, b, c in a Pl...
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Java Program to Find Maximum Element in an Array using Binary Search
Quick Guide to @RestClientTest in Spring Boot
Java Program to Implement Graph Structured Stack
Java Program to Implement Interpolation Search Algorithm
Java Program to Implement Threaded Binary Tree
Spring Boot Change Context Path
Spring Boot - File Handling
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
Spring Boot Gradle Plugin
Hướng dẫn kết nối cơ sở dữ liệu với Java JDBC
Java IO vs NIO
Java Program to Implement Insertion Sort
Tạo chương trình Java đầu tiên sử dụng Eclipse
Refactoring Design Pattern với tính năng mới trong Java 8
Spring Boot - Enabling Swagger2
Java Program to Perform Addition Operation Using Bitwise Operators
Sử dụng CountDownLatch trong Java
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Spring Boot - Hystrix
A Guide to LinkedHashMap in Java
Model, ModelMap, and ModelAndView in Spring MVC
Java Program to Emulate N Dice Roller
Spring WebClient and OAuth2 Support
Java Program to Implement ArrayDeque API
Vòng lặp for, while, do-while trong Java
A Quick Guide to Spring Cloud Consul
Java Program to Check Cycle in a Graph using Graph traversal
Java Web Services – JAX-WS – SOAP
How to use the Spring FactoryBean?