二分查找(python)

具体做法:

  • step 1:从数组首尾开始,每次取中点值。
  • step 2:如果中间值等于目标即找到了,可返回下标,如果中点值大于目标,说明中点以后的都大于目标,因此目标在中点左半区间,如果中点值小于目标,则相反。
  • step 3:根据比较进入对应的区间,直到区间左右端相遇,意味着没有找到.

 

 

 

 

 

 def search(self , nums: List[int], target: int) -> int:
        # write code here
        l = 0
        r = len(nums) - 1
        # 从数组首尾开始,直到二者相遇
        while l <= r :
            # 每次检查中点的值
            m = int((l+r)/2)
            if nums[m] == target:
                return m
            # 进入左的区间
            if nums[m] > target:
                r = m - 1
            # 进入右区间
            else:
                l = m + 1
        # 未找到
        return -1
posted @ 2022-12-01 18:34  小仙女、  阅读(35)  评论(0)    收藏  举报