0

実際、私の状況では、2つの条件があります

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

A[] arr = {....} 

double val;

この val を arr で検索したいのですが、A[i].Value > val && val < A[i+1].Value よりも val がリストにない場合があります。

場合によっては、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 に答える