【发布时间】:2014-03-02 01:00:36
【问题描述】:
您好,我有一个与 python 相关的问题,
我有一个排序的 Numpy 数组,我必须快速找到某些值的索引,到目前为止我一直在使用二进制搜索,但我遇到的问题是有许多相同值的条目,我必须找到所有值的索引。有没有办法修改二进制搜索以找到全部?
当前代码是
def binarySearch(alist,item,con_array,element):
if len(alist) == 0:
return False
else:
midpoint = len(alist)//2
if alist[midpoint]==item:
for l in range(len(alist)):
if alist[l] == item:
n_array.append(con_array[l])
return True
else:
if item<alist[midpoint]:
return binarySearch(alist[:midpoint],item,con_array[:midpoint],i)
else:
return binarySearch(alist[midpoint+1:],item,con_array[midpoint+1:],i)
如您所见,我尝试通过简单地搜索缩短的数组来合并它,但这仍然会删除一些值
【问题讨论】:
-
当前代码没有运行,说缩进被破坏了
-
你需要找到多少个值?如果您需要查找多个值,二分查找可能不是最佳选择。
-
在一个大约有 1,000,000 个条目的数组中最多 15 个不少于 4 个
标签: python search numpy binary binary-search-tree