搜索已排序的浮点数数组

时间:2013-01-10 11:05:20

标签: c++ arrays search boost

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

1 个答案:

答案 0 :(得分:4)

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

你基本上需要找到2个候选者,最接近的“upper”元素和最接近的“lower”元素(假设元素不在列表中)。这可以使用Binary Search有效(O(logN)

来实现

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

比较两个候选人 - 最接近给定浮点数的那个候选人。