検索対象の値以下の配列値のインデックスを返す「検索」列を作成しようとしています。これは私の試みであり、うまくいくようですが、もっとクリーンな方法があるかどうか疑問に思っていましたか?
// Sorted
float[] ranges = new float[]
{
0.8f,
1.1f,
2.7f,
3.9f,
4.5f,
5.1f,
};
private int GetIndex(float lookupValue)
{
int position = Array.BinarySearch(ranges, lookupValue);
if (position < 0)
{
// Find the highest available value that does not
// exceed the value being looked up.
position = ~position - 1;
}
// If position is still negative => all values in array
// are greater than lookupValue, return 0
return position < 0 ? 0 : position;
}
ありがとう。