如何确定一个浮球应该在哪个舱中? C++
我有一个浮点数组Float_t xbins[41]
,它定义了40个bin,即浮点范围。 例如y
在bin 7中,如果y > xbins[7] && !(y > xbins[8])
。如何确定一个浮球应该在哪个舱中? C++
如何确定,而不必40 if语句给定的浮动应该属于什么仓?
请用C++回答,因为我不说其他语言。
如果数组进行排序,然后做一个二进制搜索找到正确的垃圾桶。你需要组合std::sort
(如果没有排序),然后像std::lower_bound
,来定位。您需要确保operator<
正确实施为Float_t
。
谢谢,std :: lower_bound似乎是我需要的。 – user2099143 2013-02-22 11:26:03
这41个浮点数可以定义40个bin的唯一方法就是对数组进行排序。 – 2013-02-22 11:27:27
由于事实证明,箱不是均匀间隔的,但有整数界限,可能最快的方法是有一个(反)查找表,显然有大约100个条目。一个需要基本上比较两个较低的较高边界的比较。
如果阵列界限用公式导出,它可以是可以写入的逆公式优于LUT方法。
对于一般情况二进制搜索是一种方式 - 甚至可以通过执行线性插值来改进一点,而不是将范围精确地细分为一半。与二进制搜索的O(logn)相比,速度(如果数据不是病态的)将是O(loglogn)。
我不知道你想要什么。 – RvdK 2013-02-22 11:11:06
您没有告诉我应该选择“垃圾箱”的标准,那么我们如何告诉您更好的方法来实施这些标准呢? – PlasmaHH 2013-02-22 11:11:52
每个垃圾桶的浮动范围是多少?它们是完全武断的,还是可以计算垃圾箱的数量? – JasonD 2013-02-22 11:12:16