二分查找
二分查找
版本一,左闭右闭
package main
func search(nums []int,target int) int{
left:=0
right:=len(nums)-1
for left<=right{
middle:=left+((right-left)/2)
if nums[middle] > target{
right=middle-1// target 在左区间,所以[left, middle - 1]
}else if nums[middle] < target {
left=middle+1// target 在右区间,所以[middle + 1, right]
}else {
return middle
}
}
return -1
}
版本二,左闭右开
package main
func search2(nums []int,target int) int{
left:=0
right:=len(nums)
for left<right{
middle:=left+((right-left)/2)
if nums[middle] > target{
right=middle // target 在左区间,在[left, middle)中
}else if nums[middle] < target {
left=middle+1// target 在右区间,在[middle + 1, right)中
}else {
return middle
}
}
return -1
}

浙公网安备 33010602011771号