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])
}
原文地址:https://www.cnblogs.com/hardykay/p/14600353.html