假设我有一个Floats排序列表.现在我想获得给定值的下一个较低项的索引.通常的for-loop aprroach具有O(n)的复杂性.由于列表已排序,因此必须有一种方法可以使用O(log n)获取索引.
我的O(n)方法:
index=0
for i,value in enumerate(mylist):
if value>compareValue:
index=i-1
Run Code Online (Sandbox Code Playgroud)
在O(log n)中是否有解决该问题的数据类型?
最好的问候塞巴斯蒂安
ste*_*han 16
平分怎么样?
>>> import bisect
>>> float_list = [1.0, 1.3, 2.3, 4.5]
>>> i = bisect.bisect_left(float_list, 2.5)
>>> index = i - 1
>>> index
2
Run Code Online (Sandbox Code Playgroud)
您可能必须单独处理搜索值小于或等于列表中最低/最左侧值的index == -1情况(在本例中).
根据您在平等的情况下希望拥有的索引,您可能必须使用bisect_right.
| 归档时间: |
|
| 查看次数: |
11259 次 |
| 最近记录: |