Python二分法查找,Python实现二分查找

  Python二分法查找,Python实现二分查找

  原理

  1.假设表中的元素按升序排列,将记录在表中间的关键字与搜索关键字进行比较。如果它们相等,则搜索成功。

  2.否则,使用中间位置记录将表分为前后子表。

  如果中间位置记录的关键字大于搜索关键字,则进一步搜索前一子表;否则,进一步搜索下一个子表。重复上述过程,找到符合条件的记录,使检索成功,或者在子表不存在之前,此时检索不成功。

  实例

  应用前提:在包含n个元素的有序序列中定位目标值的时间复杂度:O(logn)

  该算法维护两个参数,low和high,以便所有候选条目的索引都在low和high之间。一开始,低=0,高=n-1。然后我们比较目标值和中间值候选的数据,也就是指标项[mid]。

  Mid=L(低高)/2]考虑以下三种情况3360

  -如果目标值等于[mid]的数据,然后找到了您要查找的值,则搜索成功并终止。

  -如果目标值[mid]是数据,对序列的前半部分重复此过程,即索引范围从低到中1。

  -如果目标值[mid]是数据,对序列的后半部分重复此过程,即电缆的范围是从mid 1到high。

  -如果lowhigh,索引范围[低,高]为空,则搜索不成功。这种算法被称为二分搜索法。

  defbinary_search(列表,项目):

  非递归

  first=0

  last=len(list)-1

  发现=假

  while first=lastandnotfound :

  mid=(first last)//2

  ifalist[mid]==item:

  发现=真

  else:

  ifitemalist[mid]:

  最后=中间1

  else:

  first=mid 1

  找到returnfound

  defbinary _ search _ recursion(list,item):

  iflen(列表)0:

  mid=len(list)//2

  ifalist[mid]==item:

  返回真

  elifitemalist[mid]:

  return binary _ search _ recursion(list[: mid],item)

  else:

  return binary _ search _ recursion(list[mid 1:],item)

  返回False

  if__name__==__main__:

  ret=binary _ search _ recursion([17,20,26,31,44,54,55,65,77,69],26)

  打印(ret)

  ret=binary_search([17,20,26,31,44,54,55,65,77,69],68)

  Print(ret)以上是python二分搜索法的原理。希望对你有帮助。更多python学习方向:Python基础课程

  本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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