二分查找是一种算法,其输入时是一个**有序的元素列表**.
如果要查找的元素包含在列表中,二分查找返回其位置.
# 数组的下标从0开始
list = [2, 4, 5, 12, 14, 23]
def binary_search(list, item):
"""
二分查找算法
:param list: 列表
:param item: 参数
:return: 参数下标
"""
# low和high用于跟踪要在其中查找的列表部分
low = 0
high = len(list) - 1
while low <= high:
mid = (low + high) // 2 # 只要范围没有缩小到只包含一个元素,就检查中间的元素
guess = list[mid] # 找到啦元素
if guess == item:
return mid # 返回元素下标
if guess > item:
high = high - 1 # 猜的数字大了
else:
low = low + 1 # 猜的数字小了
return None # 没有则返回空
def main(): # 主函数,设置为程序的入口
print(binary_search(list, 23)) # 获得参数下标
if __name__ == '__main__':
main()