二分查找法的局限性:只能针对从小到大排列的有列表
二分查找法的优点:可以节省内存的空间和可以提高查找的效率问题
# 定义一个列表
number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def binary_search(orderly_list, number):
print(orderly_list) # 看每次查找后的剩余部分
if len(orderly_list) == 0:
print(‘not exist‘)
return
mid_index = len(orderly_list) // 2
if number > orderly_list[mid_index]:
# 要查找的数字大于列表中间值说明要往右查找
# 继续调用自己找
binary_search(orderly_list[mid_index + 1:], number) # 要查找的数字肯定不会变列表折半继续往右找
elif number < orderly_list[mid_index]:
# 要查找的数字大于列表中间值说明要往左查找
# 继续调用自己找
binary_search(orderly_list[0:mid_index], number) # 要查找的数字肯定不会变列表折半继续往左找
else:
print(‘find exist‘)
print(orderly_list.index(number)) # 查看找到的数字所在的列表索引位置
binary_search(number_list, 20)
"""结果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[7, 8, 9, 10]
[10]
[]
not exist
"""
原文:https://www.cnblogs.com/xiaolang666/p/12590196.html