0

事实上,对于我的情况,有两个条件

class A
{
    double value;
    public double Value{get;set;}
}

A[] arr = {....} 

double val;

我想在 arr 中搜索这个 val,但 val 可能不在列表中而不是 A[i].Value > val && val < A[i+1].Value

在某些情况下,我需要 A[i]。在其他条件下我需要 A[i+1] 我尝试像 arr.ToList().BinarySearch(A, Acomparer) 但我不能这个数组有大约 550 个元素我正在尝试优化这个搜索

感谢提前帮助

4

1 回答 1

3

与基于对象比较对象Array.BinarySearch的自定义一起使用:IComparer<A>Value

public class MyComparer : IComparer<A>
{
    public int Compare(A x, A y)
    {
        return x.Value.CompareTo(y.Value);
    }
}

接着:

var index = Array.BinarySearch(arr, val, new MyComparer());
if (index >= 0) {
    // val found at index
}
else {
    // ~index is "i + 1" in your example
}
于 2012-09-27T11:12:07.103 回答