如何确定浮标应该在哪个bin中? C ++

时间:2013-02-22 11:09:19

标签: c++ arrays conditional

我有一个浮点数组Float_t xbins[41],它定义了40个二进制数,即浮点范围。 例如。如果y,则y > xbins[7] && !(y > xbins[8])位于第7栏。

如果没有40 if语句,如何确定给定浮点数应该属于哪个bin?

请用C ++回答,因为我不会说其他语言。

2 个答案:

答案 0 :(得分:4)

如果数组已排序,则执行二进制搜索以找到正确的bin。您需要std::sort(如果没有排序),然后找std::lower_bound之类的组合来定位。您需要确保operator<正确实施Float_t

答案 1 :(得分:0)

事实证明,这些区间不是均匀间隔但是有整数边界,最可能的方法是有一个(逆)查找表,显然有大约100个条目。人们需要对较低和较低的基本进行两次比较。更高的界限。

如果使用公式导出数组边界,则可以编写一个优于LUT方法的反公式。

对于一般情况,二进制搜索是这样的 - 甚至可以通过线性插值来改进一点,而不是将范围精确地细分为一半。速度(如果数据不是病态的)将是O(loglogn),而O(logn)则是二进制搜索。