我想用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
我知道这是一个老问题,但它对谷歌的结果很重要,我也有同样的问题。有一个内置的这样做,它使用二进制搜索,并允许您在一个引用数组和一个比较数组饲料。
a
是引用数组(data
在原始问题中),v
是要比较的数组(val
在问题中)。这将返回一个具有int值的array
大小v
索引,需要将v
的第n个元素插入a
中以保留a
中的排序顺序,side
关键字确定是否要将v
的元素放在a
中的适当值的“左”(前)或“右”(后)。[截至2017年7月的文档链接] https://docs.scipy.org/doc/numpy/reference/generated/numpy.searchsorted.html#numpy.searchsorted
像这样的事情应该行得通。它返回一个包含两个索引的数组。如果找到val,则返回数组中的两个值都相同。否则,它将返回最接近val的两个项的索引
下面是找到值时将返回索引的代码,否则是最接近该值的项的索引,希望能有所帮助。
相关问题 更多 >
编程相关推荐