搜索已排序的浮点数数组

Tar*_*rek 5 c++ arrays search boost

在任何数值库(MKL、Boost、GSL 等)中是否有优化的函数来搜索浮点数的排序数组以寻找与给定浮点数最接近的匹配?另一个可以为我解决相同问题的函数将从自定义离散概率分布中生成随机样本。

ami*_*mit 5

将(我和@betabandido)的评论包含在答案中:

您基本上需要找到 2 个候选元素,最接近的“上”元素和最接近的“下”元素(假设该元素不在列表中)。这可以通过使用二分查找有效地实现( O(logN))

通过使用std::lower_bound()可以获得较高的元素,较低的元素是数组中它之前的元素。

比较两个候选者 - 最接近给定浮动的那个就是你的答案。