概述
这个想法是对输入数组中的一个给定的目标元素进行二进制搜索。如果目标元素存在,则输出索引。如果输出元素不存在,则输出-1。
预计时间复杂度为O(logn)
例子1
Input: [1, 4, 5, 6]
Target Element: 4
Output: 1
Target element 4 is present at index 1
例二
Input: [1, 2, 3]
Target Element: 4
Output: -1
Target element 4 is present at index 1
程序
package main
import "fmt"
func search(nums []int, target int) int {
return binarySearch(nums, 0, len(nums)-1, target)
}
func binarySearch(nums []int, start, end, target int) int {
if start > end {
return -1
}
mid := (start + end) / 2
if nums[mid] == target {
return mid
}
if target < nums[mid] {
return binarySearch(nums, start, mid-1, target)
} else {
return binarySearch(nums, mid+1, end, target)
}
}
func main() {
index := search([]int{1, 4, 5, 6}, 4)
fmt.Println(index)
index = search([]int{1, 2, 3, 6}, 4)
fmt.Println(index)
}
输出
1
-1