私はC#4.0で作業していますが、次の問題があります。
実数の有限集合Sとパラメーターk(必ずしも集合内ではない)が与えられた場合、k以上のSの最小数を見つけます。
明らかに、バランスの取れた二分木を使用してそうすることができます。ただし、C#にはそのようなデータ構造の実装はありません。アルゴリズムのオプションとC#での可能な実装は何ですか?
編集:
ほとんどの人は実際に助けるよりも批判することに興味があるので、私はもっと説明します:
これは、実関数を数百万のピース(またはヒストグラムのようなビン)に分割するアルゴリズム用であり、kを含むピースを見つけて、それに何らかの計算を適用する効率的な方法を見つける必要があります。ピースは、フォームの実際の間隔です[a; b)重複しないでください。
私が設計している方法は、kが与えられた場合にピースを取得する必要があり、1秒間に数千回呼び出される必要があるため、パフォーマンスが重要です。したがって、O(n)検索は受け入れられません。
Sのデータ構造の構築に費やされる時間は重要ではなく、重要でもありません。これは、セットが1回だけ構築され、変更されることはないためです(これは不変のセットです)。
O(log n)検索の複雑さを持つ赤黒木を使用できることはわかっています。ただし、他のアルゴリズムオプションを調査したいと思います(おそらくC#の既存の実装を使用して)。