Python实现二分查找(二分查询)
- 作者: 凯撒-大弟
- 来源: 51数据库
- 2022-08-12
二分查询算法
def BinarySearch(a, target):
low = 0
high = len(a) - 1
while low <= high:
#在其它语言中,如果low + high的和大于Integer的最大值,比如2 ** 31 - 1,
#计算便会发生溢出,使它成为一个负数,然后被2除时结果仍为负数。在Java语言中,
#这个Bug导致一个ArrayIndexOutOfBoundsException异常被抛出,而在C语言中,
#你会得到一个无法预测的越界的数组下标。推荐的解决方法是修改中间值的计算过程,
#方法之一是用减法而不是加法——来实现:mid = low + ((high - low) / 2);或者,
#如果你想炫耀一下自己掌握的移位运算的知识,可以使用更快的移位运算操作,
#在Python中是mid = (low + high) >> 1,Java中是int mid = (low + high) >>> 1。
mid = (low + high) // 2
midVal = a[mid]
if midVal < target:
low = mid + 1
elif midVal > target:
high = mid - 1
else:
return mid
return -1
推荐阅读
热点文章
Discord.py(重写)on_member_update 无法正常工作
0
Discord.py 在 vc 中获取用户分钟数
0
discord.py 重写 |为我的命令出错
0
Discord.py rewrite 如何 DM 命令?
0
播放音频时,最后一部分被切断.如何解决这个问题?(discord.py)
0
在消息删除消息 Discord.py
0
如何使 discord.py 机器人私人/直接消息不是作者的人?
0
(Discord.py) 如何获取整个嵌入内容?
0
Discord bot 尽管获得了许可,但不能提及所有人
0
Discord.py discord.NotFound 异常
0
