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