【发布时间】:2014-07-04 02:52:23
【问题描述】:
我想在 python 中进行二分搜索:
def binarySearch(data, val):
其中data 是排序数组,value 是要搜索的值。如果找到该值,我想返回index(例如data[index] = val)。如果找不到该值,我想返回最接近该值的项目的index。
这是我得到的:
def binarySearch(data, val):
high = len(data)-1
low = 0
while True:
index = (high + low) / 2
if data[index] == val:
return index
if data[index] < val:
low = index
if data[index] > val:
high = index
【问题讨论】:
-
使用 Python 的
bisect模块:“该模块被称为bisect,因为它使用基本的二分算法来完成它的工作。源代码作为算法的工作示例可能是最有用的(边界条件已经对了!)。” -
确实在标准库中已经解决了这个问题,并且那里有源代码。
-
在添加代码后撤回关闭投票和否决票。
标签: python binary-search