📅  最后修改于: 2023-12-03 15:19:49.439000             🧑  作者: Mango
二分查找算法(Binary Search Algorithm)是一种在有序数组或列表中查找特定元素的搜索算法。该算法通过不断将待查找区间进行折半的方式来缩小查找范围,直到找到目标元素或是确定目标元素不存在于数组中。
二分查找算法的实现思路类似于“猜数字”游戏,我们需要不断地根据猜测结果缩小答案所在的范围,直至得到正确答案或者确定答案不在搜索区间内。具体实现方式如下:
def binary_search(array, target):
left, right = 0, len(array) - 1 # 初始化左右端点指针
while left <= right:
mid = (left + right) // 2 # 计算中间位置
if array[mid] == target: # 目标元素等于当前位置元素
return mid
elif array[mid] > target: # 目标元素小于当前位置元素
right = mid - 1
else: # 目标元素大于当前位置元素
left = mid + 1
return -1 # 目标元素不存在于数组中
二分查找算法的时间复杂度为 O(log n),其中 n 为数组大小。每次查找过程都会将搜索区间缩小一半,因此总共最多需要查找 log n 次,即可找到目标元素或是确认其不存在于数组中。该算法的空间复杂度为 O(1),由于每次查找只需要使用常数级别的额外空间。