-2
问题是要找到小于或等于N的元素的索引。为了解决这个问题,我编写了下面的代码,但它似乎不工作。在Python中实现修改的二进制搜索
def find_index(primes, N, start, end):
mid = int((start + end)/2)
if start == end:
return start
if primes[mid - 1] < N:
if primes[mid] == N:
return mid
elif primes[mid] > N:
return mid - 1
else:
return find_index(primes, N, start, mid + 1)
elif primes[mid - 1] > N:
if primes[mid] > N:
return find_index(primes, N, mid - 1, end)
我缺少什么明显的病情?有没有更好的方法来找到O(log(n))中的索引?
在python中有一个bisect。所以如果你没有在教育目的上这样做,那就使用它。如果在教育中 - 显示你如何调试你的脚本。 – 2014-11-25 09:53:31
请比*更精确“似乎不工作”*。 – jonrsharpe 2014-11-25 10:02:59
@SalvadorDali,我将其用于教育目的,并感谢您的建议。我会尽力找到Bisect模块的工作。 – Manu 2014-11-25 11:16:16