0
点赞
收藏
分享

微信扫一扫

Golang 二分查找

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)
	}
}

二分查找实现的前提是:数据必须是有序的。

举报

相关推荐

0 条评论