我有一個浮點數組Float_t xbins[41]
,它定義了40個bin,即浮點範圍。 例如y
在bin 7中,如果y > xbins[7] && !(y > xbins[8])
。如何確定一個浮球應該在哪個艙中? C++
如何確定,而不必40 if語句給定的浮動應該屬於什麼倉?
請用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