我有一个排序列表,我需要在该列表中定位一个元素,使得前一个元素是< =并且列表中的下一个元素是> (列表是浮点数列表)
我需要返回元素的位置< =即前一个元素
我如何在对数时间内实现这一点。我想使用类似于二进制seacrh的方法但无法使其工作
任何帮助将不胜感激
P.S。一个例子是:如果列表是
testlist=[0.0, 0.25, 0.5, 0.75, 1.0]
我运行0.27的功能 该函数将返回1(0.25的位置) 如果我以0.5运行它将返回2
答案 0 :(得分:3)
有一个专用的二进制搜索模块:bisect
import bisect
testlist=[0.0, 0.25, 0.5, 0.75, 1.0]
print bisect.bisect(testlist, .27) - 1
## 1