package main
import "fmt"
func main() {
data := []int{1,2,3,4,5,8,10}
fmt.Println(binFind(data,8))
fmt.Println(binFind(data,9))
}
func binFind(data []int, item int) int {
if len(data) == 0 {
return -1
}
i, j := 0, len(data)-1 // 双指针,注意j的值为末尾下标,不是长度
for {
mid := (i+j)/2 // 此处需要向下取整,Go默认。其他语言需要注意
if item == data[mid] {
return mid
}
if item < data[mid] {
j = mid-1 // 注意让出边界值
} else {
i = mid+1 // 注意让出边界值
}
if i > j { // 不能用i>=j
break
}
}
return -1
}
Go二分查找
猜你喜欢
转载自blog.csdn.net/u013474436/article/details/105138789
今日推荐
周排行