Golang程序 在一个排序的数组中搜索一个元素

Golang程序 在一个排序的数组中搜索一个元素

解决这个问题的方法

  • 第1步:从第 0个索引到 n-1 的数组进行迭代,其中 n 是给定数组的大小。
  • 第2步:声明 low=第0个索引high=n-1。 开始一个 for 循环,直到low小于high。
  • 第3步:找到 mid=(low+high)/2 ,如果中间的元素等于 key, 则返回 mid索引。
  • 第4步:如果在 mid 的元素大于 key ,那么使 high=mid。
  • 第5步:如果 中间 的元素小于 key ,那么使 low = mid + 1。
  • 第6步:如果 不在给定的数组中,那么返回 -1。

时间复杂度: log2 (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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程