是一种在有序数组中查找特定元素的搜索算法。该算法通过将数组分成两半,逐步缩小查找范围来提高查找效率。具体来说,每次比较中间元素与目标值,根据比较结果决定是继续在左半部分还是右半部分进行查找,从而每次迭代都能排除一半的查找空间,时间复杂度对数级别O(logn)
def binary_search(lst, element):
"""二分查找"""
left = 0
right = len(lst)-1
count = 0 # 记录查询次数
while left <= right:
mid = (left + right)//2 #获得中间位置
count += 1
if element < lst[mid]:
right = mid - 1
elif element > lst[mid]:
left = mid + 1
else:
print("查到了元素,用了",count,"次")
return mid
return -1 # 上面while程序结束后,仍然未找到,说明元素不在列表中,返回-1表示。
p = binary_search(a,19)
print(f"索引位置:{p}")