python编写函数实现二分法查找,二分查找法Python

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: