Files
grokking_algorithms/01_introduction_to_algorithms/Golang/BinarySearch.go

45 lines
951 B
Go

package main
import "fmt"
func checkBin(list []int, i int) int {
low := 0
high := len(list) - 1
for low <= high {
mid := (low + high) / 2
if list[mid] == i {
return mid
}
if list[mid] < i {
low = mid + 1
} else {
high = mid - 1
}
}
return -1
}
func RecursiveCheckBin(list []int, item int, high, low int) int {
if high >= low {
mid := (high + low) / 2
if list[mid] == item {
return mid
} else if list[mid] > item {
return RecursiveCheckBin(list, item, mid-1, low)
} else {
return RecursiveCheckBin(list, item, high, mid+1)
}
}
return -1
}
func main() {
list := []int{1, 2, 3, 4, 5}
fmt.Println(checkBin(list, 2)) // 0
fmt.Println(checkBin(list, -1)) // -1
fmt.Println(RecursiveCheckBin([]int{1, 2, 3, 4, 5}, 2, len(list)-1, 0)) // 1
fmt.Println(RecursiveCheckBin([]int{1, 2, 3, 4, 5}, 0, len(list)-1, 0)) //-1
}