算法-在数组中获取制定值的下标-Go(二分法)
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param target int整型
* @return int整型
*/
func search(nums []int, target int) int {
// write code here
if len(nums) == 0 {
return -1
}
left := 0
right := len(nums) - 1
// 循环
for left <= right {
// 中间的索引值
middle := (left + right) / 2
// 判断中间索引对应的值是否为目标值,二分查找关键
if nums[middle] == target {
return middle
}
// 如果查找后,中间的值 > 目标值,说明目标值在左半部分,那么right就最大为中间值
if nums[middle] > target {
right = middle - 1
} else {
// 如果中间的值 < 目标值,那么目标值在右半部分,left最小也是中间值,需要left右移
left = middle + 1
}
}
return -1
}
本文来自博客园,作者:alisleepy,转载请注明原文链接:https://www.cnblogs.com/alisleepy/p/18667389

浙公网安备 33010602011771号