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