def find_closest(data, target, key = lambda x:f(x))
这是我的函数定义,其中数据是一组值,我希望在尽可能少的计算中找到计算最接近目标的值,即
abs(target-f(x))
是最小值。f(x)
是单调的。我听说二进制搜索可以在o(log(n))时间内完成,python中有库实现吗?有没有更有效的搜索算法?
编辑:我希望在评估F(x)方面尽量减少复杂性,因为这是昂贵的部分。我想在数据中找到x,当用f(x)求值时,它最接近目标
data
在f
范围内,target
在f
范围内是的,数据可以很快分类。 最佳答案
您可以使用bisect
模块中的实用程序。不过,您必须在x
上对data
求值,即list(f(x) for x in data)
才能得到一个单调/排序的列表。
我不知道标准库中直接在f
和data
上工作的二进制搜索。