Я пытаюсь создать столбец «поиска», который бы возвращал индекс значения массива, равного или меньшего, чем искомого значения. Так что это моя попытка, которая, кажется, работает нормально, но мне было интересно, есть ли более чистый способ сделать это?
// 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;
}
Спасибо.