Golang实现二分查找
二分查找的思想:拿到有序数组的首尾下标,然后取中间值跟需要查找的值对比,如果中间值等于查找值则返回下标,如果中间值大于查找值则继续查找左边区块,如果中间值小于查找值则继续查找左边区块,如果查找不到则返回-1,查找结束。
package main import "fmt" func binarySearch(arr []int, value int) int { first, last := 0, len(arr) - 1 var min int for first <= last { min = int((first + last)/2) if arr[min] == value { return min } else if arr[min] > value { last = min -1 } else { first = min + 1 } } return -1 } func main(){ a := []int{1,2,3,4,5,6,7} key := binarySearch(a, 2) fmt.Println(a[key]) }