步骤1:将数组从第0个索引迭代到n-1,其中n是给定数组的大小。
步骤2:声明low = 0th索引和high = n-1。启动一个for循环,直到低电平小于高电平为止。
步骤3:找到mid =(low + high)/ 2,如果中间的元素等于key,则返回mid index。
步骤4:如果mid的元素大于key,则使high = mid。
步骤5:如果位于mid的元素小于key,则使low = mid +1。
步骤6:如果给定数组中不存在key,则返回-1。
时间复杂度: log 2(n)
package main
import "fmt"
func binarySearch(arr []int, key int) int{
   high := len(arr) - 1
   low := 0
   var mid int
   for low <= high {
      mid = (high+low)/2
      if arr[mid] == key {
         return mid
      } else if arr[mid] > key {
         high = mid
      } else {
         low = mid + 1
      }
   }
   return -1
}
func main(){
   fmt.Println(binarySearch([]int{1, 4, 6, 8, 9, 10}, 11))
   fmt.Println(binarySearch([]int{1, 4, 6, 8, 9, 10}, 8))
   fmt.Println(binarySearch([]int{1, 4, 6, 8, 9, 10}, 10))
}输出结果-1 3 5