gpt4 book ai didi

c# - 使用 Array.BinarySearch() 返回第一个值 <= 查找值?

转载 作者:太空宇宙 更新时间:2023-11-03 22:20:06 25 4
gpt4 key购买 nike

我正在尝试创建一个“查找”列,该列将返回等于或小于要查找的值的数组值的索引。所以这是我的尝试,似乎工作正常,但我想知道是否有更清洁的方法?

// 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;
}

谢谢。

最佳答案

不,我认为这是一个非常好的方法。

我唯一可能改变的是让它成为数组的扩展方法,而不是引用类变量的私有(private)函数。然后它变得通用/不绑定(bind)到一个类,语法也更清晰:ranges.GetIndex(...)

像这样:

public static class Extensions
{
public static int GetIndex<T>(this T[] ranges, T lookupValue)
{
// your code here
}
}

当然,你必须记住这只适用于排序数组......

关于c# - 使用 Array.BinarySearch() 返回第一个值 <= 查找值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3452862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com