func main() {
nums := []int{1, 10, 12, 34, 55, 63, 67, 89, 91, 100}
fmt.Println(search(12, nums, 0, len(nums)-1))
}
// search 从给定的数组中查找指定的数值, 不存在返回 -1
func search(target int, arr []int, l, r int) int {
if l > r {
return -1
}
m := (l + r) / 2
if arr[m] == target {
return m
}
if arr[m] > target {
// 从左边开始找
return search(target, arr, 0, m-1)
} else {
// 从右边开始找
return search(target, arr, m+1, r)
}
}
二分查找实现的前提是:数据必须是有序的。