步骤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程序以搜索数组中的元素,包括了编写Golang程序以搜索数组中的元素的使用技巧和注意事项,需要的朋友参考一下 定义: 一个数字是大于2且只能被其自身和1整除。 示例:素 数是2、3、5、7、11、13、113、119等。 解决这个问题的方法 步骤1:找到给定数字的平方根sq_root =√num 步骤2:如果给定数字可被[2,sq_root]所属的数字整除,则打印“非
本文向大家介绍编写Golang程序以查找数组中元素的频率,包括了编写Golang程序以查找数组中元素的频率的使用技巧和注意事项,需要的朋友参考一下 例子 在输入数组中,arr = [2、4、6、7、8、1、2] 给定数组中2的频率为2 7的频率为1 3的频率为0。 解决这个问题的方法 步骤1:定义一个接受数组和数字的函数 步骤2:声明一个变量count = 0。 步骤3:迭代给定数组,如果在数组中
本文向大家介绍编写Golang程序以使用冒泡排序对数组进行排序,包括了编写Golang程序以使用冒泡排序对数组进行排序的使用技巧和注意事项,需要的朋友参考一下 定义:冒泡排序是最简单的排序算法,通过以错误顺序重复交换相邻元素来工作。 例子 输入arr = [7、5、1、6、3] 第一次迭代=> swap(7,5)=> swap(7,1)=> swap(7,6)=> swap(7,3)=> [5,1
本文向大家介绍编写Golang程序以查找给定数组中的重复元素,包括了编写Golang程序以查找给定数组中的重复元素的使用技巧和注意事项,需要的朋友参考一下 例子 输入数组= [1、3、5、6、1] =>重复元素为1; 输入数组= [1、3、5、6、7] =>返回-1 解决这个问题的方法 步骤1: 定义一个接受数组的方法。 第2步: 声明访问过的映射。 步骤3:迭代给定的数组。如果该元素存在于已访问
本文向大家介绍编写Golang程序以查找数组中具有最小值的元素,包括了编写Golang程序以查找数组中具有最小值的元素的使用技巧和注意事项,需要的朋友参考一下 例子 A1 = [2、4、6、7、8、10、3、6、0、1];最小数量为0; A2 = [12、14、16、17、18、110、13、16、10、11];最小数量为10; 解决这个问题的方法 步骤1:将第0个索引处的数字视为最小值,min_
本文向大家介绍编写Golang程序以查找数组中每个元素的出现次数,包括了编写Golang程序以查找数组中每个元素的出现次数的使用技巧和注意事项,需要的朋友参考一下 例子 输入数组= [1、3、4、3、2、3、4、0、2] 元素 1 3 4 2 0 出现次数 1 3 2 2 1 解决这个问题的方法 步骤1: 定义一个接受数组的方法。 步骤2: 定义一个映射,其中key将是数组的元素,起始值为0。 步