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

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

  本文主要介绍Python语言实现二分法搜索,也称二分法搜索。这是一种高效的搜索方法,下面将详细介绍。有需要的朋友可以参考一下。

  前言:

  二分法,即二分搜索法,是一种高效的搜索方法。

  如果公司来了一个新人,张三,你公司第47个人。一段时间后,有人对张三不满,离开公司。那么张三绝对不是此时公司的第47人。怎么才能知道张三的军衔?让我们用二分法找出他。

  思路:

  给你一本1000页的书,页码是随机的。你如何能以最快的方式找到它?如果一页一页的搜索,最多需要搜索1000次!那么我们如何用二分法解决这个问题呢?二分法的关键是二分法这个词。

  步骤1:以页码为中心点,将1000页分成两部分。中值的作用是把搜索范围一次缩小一半,也就是达到开方的效果。即(第一名和最后一名)/2=中位数。

  步骤2:将要搜索的页码与中值进行比较。如果大于中值,则放弃对中值前半部分的搜索;否则丢弃后半部分范围的搜索,从而达到处方效果。步骤3:重新计算新搜索范围的中值。

  找到步骤4:,的中间页码,并确定新的搜索范围。

  步骤5:重复上述步骤,直到找到页码。

  代码:

  通过对以上思路的分析,我们知道二分法的实施步骤。接下来我们将按代码实现步骤,首先是循环实现。

  #模拟页码

  array=[1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,99,107]

  #第一个值

  低=0

  #最后一位值

  height=len(array)-1

  #设置搜索页码。

  findNum=1

  #循环搜索

  而True:

  #获取中间值

  mid=int((低高度)/2)

  #打印中值并检查循环次数

  打印(数组[mid])

  #如果中值小于搜索值,则锁定后半部分。

  if array[mid] findNum:

  #重置低位数字

  低=中1

  #如果中值大于搜索值,锁定前半部分

  elif数组[mid] findNum:

  #重置高值

  高度=中间1

  #如果找到了数字,打印出数值的下标,结束循环。

  elif数组[mid]==findNum:

  print(find it: ,array[mid], index: ,mid)

  破裂

  除了以上方法,还可以用递归实现,代码更简洁。

  array=[1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,99,107]

  #函数递归

  #定义一个函数,给三个参数3360低阶值,高阶值,搜索值。

  def BinarySearch(low,height,findNum):

  #计算中位数

  middle=(低高度)//2

  #如果中值小于搜索值,则锁定后半部分。

  if findNum数组[middle]:

  #重置低位数字

  低=中间1

  #如果中值大于搜索值,锁定前半部分

  elif findNumarray[middle]:

  #重置高值

  高度=中间- 1

  else:

  #找到值并返回它

  Return 这个值的下标是:%s,值是:%s%(middle,array[middle])

  #如果找不到,打电话给自己继续找。

  返回BinarySearch(low,height,findNum)

  print(BinarySearch(array[0],len(array)-1,19))

  总结:

  根据反馈的结果,使用Python二分搜索法循环查找数字21。排在第11位,中位数查询3次。Python二分搜索法首先递归地获取查询数的倍数,然后将前半部分锁定为索引。索引步骤花费的时间更少。

  这就是这篇关于Python语言二分搜索法的文章。更多相关Python二分搜索法内容,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

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

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