class Solution:
    def search(self,nums,target):
        left=0 #左指针初始索引为0
        right=len(nums)-1 #右指针初始索引为数组长度减一
        while left<=right:
            mid=(left+right)//2
            if target>nums[mid]:
                left=mid+1
            elif target<nums[mid]:
                right=mid-1
            else:
                return mid
        return -1
 注意点:
1.终止条件判断
1)查找成功(能找到目标值):在while循环体里面正常结束。
(1)注意while循环条件(不能少=,否则要另外单独考虑数组长度为1的情况):当数组长度为1时,left==right=0,此时return mid=0
2)查找失败(返回-1的情况):即当while循环条件为假时
(1)数组为空;right=len(nums)-1=-1<left=0,不进入循环,返回-1。
(2)目标值不存在;在left<=right的条件下找不到目标值,直到left>right时,终止循环,返回-1。
2.指针移动
当target>nums[mid],说明nums[mid]肯定不是目标值,此时应让mid+1赋值给left,而不是mid。同理right。