# 二分查找
# 使用while 循环
# 也可以使用递归
def binary_search(data_list, num):
low = 0
high = len(data_list) - 1
while low <= high:
# mid 是中间数的下标 (//是整除)
mid = (low + high) // 2
# 如果中间值大于num 说明num存在于左侧
if data_list[mid] > num:
high = mid - 1
# 同理 如果中间值小于num 说明num存在有右侧
elif data_list[mid] < num:
low = mid + 1
# 剩下还有什么? =
else:
return mid
if __name__ == '__main__':
data_list = [22, 15, 17, 16, 14, 8, 12, 1, 25, 19, 33]
# 排序 #1,8,12, 14, 15, 16, 17, 19, 22, 25, 33]
data_list.sort()
num = 16
is_exit = binary_search(data_list, num)
print(is_exit) # 打印的是16 在这个列表中的下标
二分查找
最新推荐文章于 2023-05-28 13:59:52 发布