python编写函数实现二分法查找,二分查找法Python
本文主要介绍python动手案例练习。本文分享的案例主要讲解二分法搜索,需要的朋友可以参考一下。
00-1010如果写在前面,问题描述原理分析1。实施步骤2。插图参考代码
目录
学习了Python的一些基础知识,相信大家对Python的用法也有了一定的了解。如果你想追求更深层次的东西,那就要认真慢慢学。Python的基础课程更新到今天,基础语法讲完了。本专栏稍后将更新面向对象模块。在面向对象更新之前,会有一集Python系列。主要功能是用Python刷算法题,让你的基础更稳固。更新期间得到了广大小伙伴的喜爱,博主的知识水平也得到了提升。让我们言归正传,解释一下我们今天要学习的二分搜索法方法。
写在前面的话
在学习语言的时候,我们做的最多的一件事情就是对数据进行增删查,而除此之外最常做的事情就是查,因为一个软件的主要功能就是向亲爱的用户展示信息,只有少数管理员或者有权限的用户才能对数据进行操作。例如,要在链表和数组中查找内容,我们需要从头开始遍历它们,并逐个进行搜索。当数据量巨大时,这可能是一个令人头疼的问题。今天介绍的二分法搜索(或称半搜索)主要是针对有序序列(即数据要先排序)。然后每次取中间值进行比较,依次减半缩小搜索范围。
问题描述
原理分析
1)确定区间的中间位置k,将区间的左右边界l加到数组的两边,R2)将搜索到的值t与数组[k]进行比较。如果相等,则搜索成功返回该位置;否则,确定新的搜索区域并继续二分搜索法。区域确定如下:
每次搜索都与中间值进行比较,以确定搜索是否成功,如果不成功,则当前搜索间隔将减半。根据情况,重新定义左右边界和中间索引k的时间复杂度为:O(log2n)。
1.实现步骤
图片来自网络
2.图解
这里,在编写代码时,对系统内置的搜索关键字in和二分搜索法的运行效果进行了比较。打印结果如下:
这说明Python的底层搜索算法还是超级快的。用起来也很方便。
在这个实验中,二分搜索法迷失在对列表排序的需要中。
对于大数据量的数据,二分搜索法的优势可以体现出来。
导入时间,数学,随机
# Timer(使用前面谈到函数时提到的函数装饰器)
定义时间表(函数):
def wapper(*s):
start=time.perf_counter()
法官=函数(*s)
end=time.perf_counter()
返回裁判,开始-结束
返回wapper
#使用内置的查找方法
@timeT
def serch1(列表,e):
在列表中返回e
#二分法
@ timeT
def serch2(列表,e):
标志=假
列表=已排序(列表)
#打印(列表)
#左光标
lo=0
#右光标
ma=len(列表)-1
#中间位置
mid=len(列表)//2
#不在列表中
if列表[ma]e:
返回False
if列表[lo]e:
返回False
#依次缩小左右光标,直到loma
而lo=ma:
如果列出[mid]e:
ma=中间值
mid=(lo ma)//2
elif列表[mid]e:
lo=中间值
mid=(lo ma)//2
else:
#标志位,真表示找到了。
标志=真
破裂
返回标志
定义主():
#生成10,000个元素的列表
numar=[x代表范围内的x(10000)]
#打乱列表顺序
随机洗牌
print(* serch 1(numar,23))
print(* serch 2(numar,223))
印刷(223 in numarr)
#打印(numarr)
if __name__==__main__:
主()
关于Python二分法案例搜索的详细解释,本文到此为止。关于Python二分法搜索的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。