# 时间复杂度 log(n)
# 找出有序数组中,目标的位置索引,不存在则返回-1
def binary_search(nums, target):
n = len(nums)
if n == 0:
return -1
# 双指针
left = 0
right = n - 1
while left <= right: # 注意取等号
mid = left + (right - left + 1) // 2 # 计算中间索引
if nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid - 1
else:
return mid
return -1
if __name__ == '__main__':
nums = [1, 4 ,6, 8, 10]
target = 2
res = binary_search(nums, target)
print(res)
二分查找 python实现
最新推荐文章于 2024-07-21 22:27:18 发布