二分法举例
请实现无重复数字的升序数组的二分查找
给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1
数据范围:0~2x10**5
class Solution:
#定义元素为nums,要找的数为target
def search(self , nums: List[int], target: int) -> int:
#计算元素长度
nums_len = len(nums)
#定义最小的数是start
start = 0
#定义最大的数为end
end = nums_len - 1
#二分法思想,中间值为index
while start <= end:
index = int((start + end) / 2)
#如果中间位置的值等于要找的要查询值,则返回该元素在元素中的位置
if nums[index] == target:
return index
#如果中间位置的值小于要查询的值,则选择较大数据的另一半元素继续查询
elif nums[index] < target:
start = index + 1
#否则,选择小于中间值的一半元素继续查询
else:
end = index - 1
#如果数据不在元素范围之内,返回-1
return -1