题目描述:
解题思路:
- 二分查找模板
- 注意边界 l <= r
- 注意整型加法溢出,改用减法
代码实现:
package main
import "fmt"
func BinSearch(a []int, x int) int {
l := 0
r := len(a) - 1
for l <= r {
m := (r - l) / 2 + l
if a[m] == x {
return m
} else if a[m] < x {
l = m + 1
} else {
r = m - 1
}
}
return -1
}
func main() {
a := []int{1, 2, 3, 4, 5, 6}
fmt.Println(BinSearch(a, 1))
fmt.Println(BinSearch(a, 4))
fmt.Println(BinSearch(a, 6))
fmt.Println(BinSearch(a, 100))
}