45 lines
951 B
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
|
|
}
|