Loading

二分查找

二分查找

版本一,左闭右闭

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
}
posted @ 2022-08-31 14:58  suehoo  阅读(37)  评论(0)    收藏  举报