输入是元素和外部项的排序列表.例如:
list_ = [0, 3.5, 5.8, 6.2, 88]
item = 4.4
Run Code Online (Sandbox Code Playgroud)
找出两个元素list_
item
之间的最快方法是什么?例如,在这种情况下,两个数字将是3.5和5.8.有任何想法吗?
由于输入是有序的,因此在算法上最好的选择是使用bisect
模块 - 例如bisect_left
>>> list_ = [0, 3.5, 5.8, 6.2, 88]
>>> item = 4.4
>>> bisect.bisect_left(list_, item)
2
Run Code Online (Sandbox Code Playgroud)
您想要的项目位于索引bisect_left(list_, item)
和bisect_left(list_, item) - 1
这应该会给你一个O(logN)
搜索结果- 从算法的角度来看,它没有比这更好.