python之二分法
一、什么是算法
这里的算法就是基于函数递归的称述拓展
- 算法就是高效解决问题的方法
- 二分法就是一种算法
二、二分法应用场景
- 想要从一个从小到大排列的成千上万个值中找到指定的值
- 如果使用遍历的话效率太低
- 那么而二分法就可以极大的缩小问题的规模,以此来提高效率
示例
nums = [-23,-2,4,5,8,90,234,345,467,786,978,8900] # 从小到大排列
def check(num,l):
print(l)
if len(l) == 0:
print("不存在这个值")
return
mid_num = len(l) // 2
if num > l[mid_num]: # 说明在中间值得右边
l = l[mid_num+1:] # 使用切片将右边的值从新赋值给 l
check(num,l) # 递归
elif num < l[mid_num]: # 说明在中间值得右边
l = l[:mid_num] # 使用切片将右边的值从新赋值给 l
check(num,l) # 递归
else:
print("OK!")
check(8900,nums) # OK!