持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
二分查找是什么?
假设你在玩一个猜数游戏,我会告诉你大了,正确,小了且范围为1~100。用普通方法(一个一个猜)最多需要猜100次,而二分查找却快得多。那么什么是二分查找呢?
二分查找是一种算法,输入必须为有序的元素列表。我先猜了50,小了,那么我就排除了一半,接下来再猜75......这就是二分查找!接下来可以重复二分查找直到找到正确值。
二分查找和普通查找的速度有什么区别?
普通查找的速度为n(n为需要执行的操作数) 二分查找的速度为log n
接下来请看二分查找与普通查找的动图: img-blog.csdnimg.cn/20210313090… (我也不知道什么原因,动图展示不了,只能放链接啦)
二分查找的条件
1.二分查找需要保证是有序数列,但普通查找并不需要。
2.查找的数量只能是一个,不能是多个
如何实现二分查找?
def binary_search(list,item):
low=0
hight=len(list-1)#用于跟踪要查找的部分
while low<=hight:#只要范围没有缩小到只包含一个元素
mid=(low+high)/2#就检查中间元素
guess=list[mid]
if guess==item:#找到了
return mid
if guess>item:
hight=mid-1
else:
low=mid+1
return none
算法就是这样,但是测试用的list和item需要读者自己编写。(list是数组(列),item是答案)如果找到了item就返回其下标,如果没有找到就返回none(有的题目需要返回-1,请自行更改)
总结
二分查找已经学会了,它最重要的核心就是:有序,答案唯一。其实还有许多查找与算法,例如贪婪算法,快速查找等等,不过这已经是后话了。