VB .NET Program to Implement Interpolation Search

VB .NET Program to Implement Interpolation Search

When it comes to searching through data, Binary Search is often the first algorithm that comes to mind. But what if your data is uniformly distributed—meaning the values are evenly spread out? In such cases, Interpolation Search can be even faster than Binary Search. Interpolation Search estimates the position of the target value based on the distribution of the data, rather than simply checking the middle element. This makes it particularly effective for large, sorted datasets where elements are evenly spaced.

Pluralsight Logo
Accelerate your tech career
with hands-on learning.
Whether you're a tech newbie or a total pro,
get the skills and confidence to land your next move.
Start 10-Day Free Trial

Interpolation Search is widely used in scenarios like searching within employee IDs, serial numbers, or other numeric sequences where values are predictable. By understanding this algorithm, beginners can learn a more advanced searching technique and see how different strategies can optimize performance for specific kinds of data. It also provides insight into predictive indexing, which is important in databases and real-world applications.

Program 1: Iterative Interpolation Search

This program demonstrates Interpolation Search using a loop, searching for a number in a sorted, uniformly distributed array.

Module Module1

    Sub Main()

        Dim data() As Integer = {10, 20, 30, 40, 50, 60, 70, 80}
        Dim target As Integer = 50
        Dim low As Integer = 0
        Dim high As Integer = data.Length - 1
        Dim found As Boolean = False

        While low <= high AndAlso target >= data(low) AndAlso target <= data(high)

            Dim pos As Integer = low + ((target - data(low)) * (high - low)) \ (data(high) - data(low))

            If data(pos) = target Then

                Console.WriteLine("Element found at position: " & pos)
                found = True

                Exit While

            ElseIf data(pos) < target Then
                low = pos + 1
            Else
                high = pos - 1
            End If

        End While

        If Not found Then
            Console.WriteLine("Element not found in the array.")
        End If

        Console.ReadLine()

    End Sub

End Module

This program calculates the probable position of the target using a formula based on the value’s range. Unlike Binary Search, which always checks the middle, Interpolation Search predicts where the element is likely to be, making it faster when data is uniform. Beginners can understand it as a smarter way to jump directly to the area where the element should be.

Program 2: Recursive Interpolation Search

Here’s a recursive version, which calls the same function until the target is found or the search space is empty.

Module Module1

    Function InterpolationSearch(arr() As Integer, target As Integer, low As Integer, high As Integer) As Integer

        If low <= high AndAlso target >= arr(low) AndAlso target <= arr(high) Then

            Dim pos As Integer = low + ((target - arr(low)) * (high - low)) \ (arr(high) - arr(low))

            If arr(pos) = target Then
                Return pos
            ElseIf arr(pos) < target Then
                Return InterpolationSearch(arr, target, pos + 1, high)
            Else
                Return InterpolationSearch(arr, target, low, pos - 1)
            End If

        End If

        Return -1

    End Function

    Sub Main()

        Dim data() As Integer = {5, 10, 15, 20, 25, 30, 35}
        Dim target As Integer = 25
        Dim result As Integer = InterpolationSearch(data, target, 0, data.Length - 1)

        If result <> -1 Then
            Console.WriteLine("Element found at position: " & result)
        Else
            Console.WriteLine("Element not found in the array.")
        End If

        Console.ReadLine()

    End Sub

End Module

The recursive approach keeps reducing the search space based on the predicted position. Beginners can see how recursion mirrors the iterative logic but in a more elegant, divide-and-conquer style, emphasizing the concept of predictive searching.

Program 3: Interpolation Search with Negative Numbers

This program shows that Interpolation Search can handle negative numbers as long as the array is sorted.

Module Module1

    Sub Main()

        Dim data() As Integer = {-50, -30, -10, 0, 10, 20, 40}
        Dim target As Integer = -10
        Dim low As Integer = 0
        Dim high As Integer = data.Length - 1
        Dim found As Boolean = False

        While low <= high AndAlso target >= data(low) AndAlso target <= data(high)

            Dim pos As Integer = low + ((target - data(low)) * (high - low)) \ (data(high) - data(low))

            If data(pos) = target Then

                Console.WriteLine("Element found at position: " & pos)
                found = True

                Exit While

            ElseIf data(pos) < target Then
                low = pos + 1
            Else
                high = pos - 1
            End If

        End While

        If Not found Then
            Console.WriteLine("Element not found in the array.")
        End If

        Console.ReadLine()

    End Sub

End Module

The formula for position calculation still works with negative values. Beginners can understand that the algorithm depends on value differences, not their sign, making it versatile for mixed datasets.

Program 4: Interpolation Search for Floating-Point Numbers

This example demonstrates searching decimal values in a sorted array.

Module Module1

    Sub Main()

        Dim data() As Double = {0.5, 1.0, 1.5, 2.0, 2.5, 3.0}
        Dim target As Double = 2.5
        Dim low As Integer = 0
        Dim high As Integer = data.Length - 1
        Dim found As Boolean = False

        While low <= high AndAlso target >= data(low) AndAlso target <= data(high)

            Dim pos As Integer = low + CInt((target - data(low)) * (high - low) / (data(high) - data(low)))

            If data(pos) = target Then

                Console.WriteLine("Element found at position: " & pos)
                found = True

                Exit While

            ElseIf data(pos) < target Then
                low = pos + 1
            Else
                high = pos - 1
            End If

        End While

        If Not found Then
            Console.WriteLine("Element not found in the array.")
        End If

        Console.ReadLine()

    End Sub

End Module

Using decimal numbers does not change the algorithm’s logic. Beginners can see that Interpolation Search works for integers, negative numbers, and floating-point numbers, as long as the array is sorted and roughly uniform.

Program 5: Interpolation Search with User Input

This program allows users to enter a sorted array and target value, then performs Interpolation Search dynamically.

Module Module1

    Sub Main()

        Console.WriteLine("Enter sorted numbers separated by space:")

        Dim input As String = Console.ReadLine()
        Dim data() As Integer = Array.ConvertAll(input.Split(" "c), Function(s) Int32.Parse(s))

        Console.WriteLine("Enter number to search:")

        Dim target As Integer = Int32.Parse(Console.ReadLine())

        Dim low As Integer = 0
        Dim high As Integer = data.Length - 1
        Dim found As Boolean = False

        While low <= high AndAlso target >= data(low) AndAlso target <= data(high)

            Dim pos As Integer = low + ((target - data(low)) * (high - low)) \ (data(high) - data(low))

            If data(pos) = target Then

                Console.WriteLine("Element found at position: " & pos)
                found = True

                Exit While

            ElseIf data(pos) < target Then
                low = pos + 1
            Else
                high = pos - 1
            End If

        End While

        If Not found Then
            Console.WriteLine("Element not found in the array.")
        End If

        Console.ReadLine()

    End Sub

End Module

This interactive program shows how Interpolation Search can be applied to real-world scenarios where the dataset may vary. Beginners can practice integrating algorithms with user input and dynamic data.

Frequently Asked Questions (FAQ)

Here are some common questions beginners ask about Interpolation Search:

Q1: What is the main advantage of Interpolation Search over Binary Search?
It can be faster for uniformly distributed data because it predicts the likely position of the target, instead of checking the middle element every time.

Q2: Can Interpolation Search handle negative numbers?
Yes. The algorithm works with negative values as long as the array is sorted.

Q3: Does the array need to be sorted?
Yes. Sorting is mandatory; otherwise, the algorithm will produce incorrect results.

Q4: Can Interpolation Search work with decimals?
Yes. Floating-point numbers can be used as long as the array is sorted and fairly uniform.

Q5: Is Interpolation Search always faster than Binary Search?
Not always. It is faster for uniform distributions but may perform worse on skewed or unevenly distributed arrays.

Conclusion

Interpolation Search is a smart searching algorithm that optimizes performance for uniformly distributed, sorted datasets. By exploring iterative, recursive, negative numbers, floating-point numbers, and user input examples, beginners can understand both the logic and versatility of the algorithm. Practicing this technique strengthens problem-solving skills and prepares beginners to choose the right algorithm for different scenarios, improving efficiency in VB .NET applications.

Scroll to Top