编写Golang程序以搜索排序数组中的元素
解决这个问题的方法
步骤1:将数组从第0个索引迭代到n-1,其中n是给定数组的大小。
步骤2:声明low=0th索引和high=n-1。启动一个for循环,直到低电平小于高电平为止。
步骤3:找到mid=(low+high)/2,如果中间的元素等于key,则返回midindex。
步骤4:如果mid的元素大于key,则使high=mid。
步骤5:如果位于mid的元素小于key,则使low=mid+1。
步骤6:如果给定数组中不存在key,则返回-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
热门推荐
10 祝孙辈生日祝福语简短
11 恋人跨年祝福语大全简短
12 考大学敬酒简短祝福语
13 开工投产大吉祝福语 简短
14 偶然结婚祝福语朋友简短
15 感谢学长学姐祝福语简短
16 戏精的祝福语简短
17 我要结婚祝福语简短
18 婚前女儿生日祝福语简短