文章插图
在计算机科学中 。二分搜索(英语:binary search) 。也称折半搜索(英语:half-interval search)[1]、对数搜索(英语:logarithmic search)[2] 。是一种在有序数组中查找某一特定元素的搜索算法 。搜索过程从数组的中间元素开始 。如果中间元素正好是要查找的元素 。则搜索过程结束;如果某一特定元素大于或者小于中间元素 。则在数组大于或小于中间元素的那一半中查找 。而且跟开始一样从中间元素开始比较 。如果在某一步骤数组为空 。则代表找不到 。这种搜索算法每一次比较都使搜索范围缩小一半 。
文章插图
输出结果是:
文章插图
Bisect模块提供的函数有:(1)查找bisect.bisect_left(a,x, lo=0, hi=len(a)) :
查找在有序列表a中插入x的index 。lo和hi用于指定列表的区间 。默认是使用整个列表 。
bisect.bisect_right(a,x, lo=0, hi=len(a))
bisect.bisect(a, x,lo=0, hi=len(a))
这2个和bisect_left差不多 。但如果x已经存在 。在其右边插入 。
(2)插入bisect.insort_left(a,x, lo=0, hi=len(a))
在有序列表a中插入x 。如果x已经存在 。在其左边插入 。返回值为index 。和a.insert(bisect.bisect_left(a,x, lo, hi), x) 的效果相同 。
bisect.insort_right(a,x, lo=0, hi=len(a))
bisect.insort(a, x,lo=0, hi=len(a))
和insort_left差不多 。但如果x已经存在 。在其右边插入 。
【python实现二分法查找 python二分法中搜索精度算法】可以函数可以分2类 。bisect* 。用于查找index 。Insort*用于实际插入 。默认重复时从右边插入 。实际常用的估计是insort 。
推荐阅读
- 现在可以在哪个平台上接到机加工业务啊?
- 美国有哪些有名的黑帮组织?
- 王者荣耀:猪八戒机制和强度都不错,为什么出场率和胜率排倒数?
- 晋江十大公认最好看的小说言情,最受欢迎前十本言情小说
- 貂怎么训练上厕所 如何训练宠物貂上厕所
- 南海入列 介入南海,又有国家开始行动
- 《王者荣耀》新赛季“圣光流”亚瑟崛起,每秒恢复300血,技能几乎无冷却,应该怎么玩?
- 拜登对硅谷银行破产解决方案表示“满意”,鼓励美国人保持信心反遭嘲讽
- 一些美剧为啥这么好看?