概述
二分查找方法
-
在一组有序数组中,将数组一分为二,将要查询的元素和分割点进行比较,分为三种情况
- 相等直接返回
- 元素大于分割点,在分割点右侧继续查找
- 元素小于分割点,在分割点左侧继续查找
-
必须是有序的数组,并能支持随机访问
-
查找第一个值等于给定的。在相等的时候做处理,向前查
-
查找最后一个值等于给定的值。在相等的时候做处理,向后查
-
查找第一个大于等于给定的值。判断边界减1
-
查找最后一个小于等于给定的值。判断边界加1
-
package main import ( "fmt" ) /** 二分查找法 */ func binarySearch(arr []int, dst int) int { low := 0 high := len(arr) - 1 for low <= high { mid := (low + high) / 2 fmt.Println("mid:", mid) if arr[mid] > dst { high = mid - 1 } else if arr[mid] < dst { low = mid + 1 } else { return mid } } return -1 } func main() { arr := make([]int, 1000) for i := 0; i < 1000; i++ { arr[i] = i + 1 } id := binarySearch(arr, 888) if id == -1 { fmt.Println("没找到") } else { fmt.Println(id, arr[id]) } /** mid: 499 mid: 749 mid: 874 mid: 937 mid: 905 mid: 889 mid: 881 mid: 885 mid: 887 */ }
最后
以上就是可爱荔枝为你收集整理的golang-数据结构-二分查找法的全部内容,希望文章能够帮你解决golang-数据结构-二分查找法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复