Golang Interpolation Search Algorithm

The interpolation search algorithm searches for the element in a sorted collection. The algorithm finds the input element at an estimated position by diminishing the search space before or after the estimated position. The time complexity of the search algorithm is of the order O(log log n).

Golang Interpolation Search Algorithm

Let's create a file named "interpolation_search.go" and add the following source code to it:


package main

// importing fmt and os package
import (
	"fmt"
)

//interpolation search method
func InterpolationSearch(elements []int, element int) (bool, int) {
	var mid int
	var low int
	low = 0
	var high int
	high = len(elements) - 1

	for elements[low] < element && elements[high] > element {
		mid = low + ((element-elements[low])*(high-low))/(elements[high]-elements[low])

		if elements[mid] < element {
			low = mid + 1
		} else if elements[mid] > element {
			high = mid - 1
		} else {
			return true, mid
		}
	}

	if elements[low] == element {
		return true, low
	} else if elements[high] == element {
		return true, high
	} else {
		return false, -1
	}

}

// main method
func main() {

	var elements []int

	elements = []int{2, 3, 5, 7, 9}

	var element int

	element = 7

	var found bool

	var index int
	found, index = InterpolationSearch(elements, element)

	fmt.Println(found, "found at", index)

}

Run the following command to execute the interpolation_search.go file:

G:\GoLang\examples>go run interpolation_search.go
true found at 3

Comments