"""
# 什么是算法?
高效解决问题的方法.
# 应用场景(9.18)
"""
# 需求: 有一个按照从小到大顺序排列的数字列表, 需要从该数字列表中找到我们的那一个数字, 如何做更高效?
# 注意: 这里列表是有顺序的。但是有一种情况就是你的列表是无序的。这个时候可以用内置方法sort或者内置函数sorted()进行排序以后, 再使用二分法查找.
nums = [-3, 4, 7, 10, 13, 21, 43, 77, 89]
def dechtotmy(find_value, li):
# 如果这里没有找到,那么最后会返回一个空的列表,如果这里不基于判断. 下面会报错,下面的切片操作就不能正常进行.
if not li:
print("对不起, 没有这个值")
return
middle_index = len(li) // 2
middle_value = li[middle_index]
if find_value > middle_value:
# 你要找到的值大于列表中间的值。所以我们取列表的右边
new_li = li[middle_index + 1:]
dechtotmy(find_value, new_li)
elif find_value < middle_value:
# 你要找到的值小于列表中间的值。所以我们取列表的左边。
new_li = li[:middle_index]
dechtotmy(find_value, new_li)
else:
print('OK! find it')
dechtotmy(7, nums)