我有一个已排序的列表,我需要在该列表中放置一个元素,以使上一个元素为< =,而下一个元素为> (该列表是浮点数的列表)
我将需要返回< =的元素的位置,即上一个元素 我如何在对数时间内实现这一目标.我想使用类似于二进制seacrh的方法,但无法使其正常工作 任何帮助,将不胜感激 附言一个例子是:如果列表是
testlist=[0.0, 0.25, 0.5, 0.75, 1.0]
我运行功能为0.27
该函数将返回1(位置0.25)
如果我将其运行为0.5,它将返回2
解决方法:
有一个专用的二进制搜索模块:bisect
import bisect
testlist=[0.0, 0.25, 0.5, 0.75, 1.0]
print bisect.bisect(testlist, .27) - 1
## 1