编写Golang程序以搜索排序数组中的元素

解决这个问题的方法

  • 步骤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

以上是 编写Golang程序以搜索排序数组中的元素 的全部内容, 来源链接: utcz.com/z/334537.html

回到顶部