算法-在数组中获取制定值的下标-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
}

posted @ 2025-01-12 21:41  alisleepy  阅读(22)  评论(0)    收藏  举报