二分查找

  1. 先给数组排序
  2. 定义最小点left和最大点right
  3. 取中间值作为cur
  4. 循环判断,cur跟target谁更大
  5. 若cur大了,则减小最大值right为cur-1;反之增加最小值为cur+1
  6. 直到找到cur下标跟target一样大的情况,就可以返回cur了
  7. 反之如果一直找不到,直到最小值left>最大值right了,就可以认为数组中没有这个值。
class Solution:
    def search(self, nums: List[int], target: int) -> int:
        left=0
        right=len(nums)-1
        while left<=right:
            cur=(left+right)//2
            if nums[cur] ==target:
                return cur
            elif nums[cur] >target:
                right=cur-1
            elif nums[cur]<target:
                left=cur+1
        return -1
posted @ 2024-04-30 16:21  淦丘比  阅读(3)  评论(0编辑  收藏  举报