一个左端点, 一个右端点, 循环直到左右端点交叉, 取左右端点的中点
若中点的值大于目标值, 意味着目标值只可能在中点的左边, 所以右端点变为中点的前一个位置
若中点的值小于目标值, 意味着目标值只可能在中点的右边, 所以左端点变为中点的后一个位置
若中点的值等于目标值, 则返回当前中点
循环结束还未找到, 意味着不存在目标值, 返回-1
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param target int整型
* @return int整型
*/
func search( nums []int , target int ) int {
// write code here
left, right := 0, len(nums) - 1
for left <= right {
mid := (left + right) >> 1
num := nums[mid]
if num > target {
right = mid - 1
} else if num < target {
left = mid + 1
} else {
return mid
}
}
return -1
}