```#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param nums int整型一维数组
# @param target int整型
# @return int整型
#
class Solution:
def search(self , nums: List[int], target: int) -> int:
# write code here
if len(nums)==0:
return -1
lenth_low=0
lenth_high=len(nums)-1
lenth_haf=(lenth_low+lenth_high)//2
while lenth_low<=lenth_high:
lenth_haf=(lenth_low+lenth_high)//2
if target==nums[lenth_haf]:
return lenth_haf
if target>nums[lenth_haf]:
lenth_low=lenth_haf+1
if target<nums[lenth_haf]:
lenth_high=lenth_haf-1
return -1
##### 二分查找的关键点是在于,**每次二分之后的区间不能含有中分点**,例如[0,5](中分点为(0+5)//2=2),
[0,2]就是包含了中分点,也就是说[0,5]的下一个二分区间要么是[0,1]要么是[3,5]。
以此类推,**当区间下限超过区间上限时,停止循环**,return -1,等于没找到该元素。