Python如何实现二分查找

60 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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,请自行更改)

总结

二分查找已经学会了,它最重要的核心就是:有序,答案唯一。其实还有许多查找与算法,例如贪婪算法,快速查找等等,不过这已经是后话了。