2つの配列を含むオブジェクトがあります。最初の配列は勾配配列です。
double[] Slopes = new double[capacity];
次は、さまざまな勾配のカウントを含む配列です。
int[] Counts = new int[capacity];
配列は関連しており、オブジェクトに勾配を追加すると、勾配配列に入力された最後の要素が新しいアイテムとして追加するのではなく、新しいアイテムと同じ勾配である場合、カウントが増加します。
つまり、勾配が15 15 15 12 4 15 15の場合、次のようになります。
Slopes = { 15, 12, 4, 15 }
Counts = { 3, 1, 1, 2 }
Counts
インデックスで反復して対応するインデックスを見つけるよりも、スロープでi_thアイテムを見つけるためのより良い方法はありSlopes
ますか?
編集:多分私の質問が明確でなかったかどうかわからない。発生したi_thスロープにアクセスできる必要があるため、発生するゼロインデックスのi = 3スロープは12です。問題は、新しい構造で対応するスロープを見つけるためのより効率的なソリューションが存在するかどうかです。
たぶん、これは質問をよりよく理解するのに役立つでしょう:これが私が今i_th要素を取得する方法です:
public double GetSlope(int index)
int countIndex = 0;
int countAccum = 0;
foreach (int count in Counts)
{
countAccum += count;
if (index - countAccum < 0)
{
return Slopes[countIndex];
}
else
{
countIndex++;
}
}
return Slopes[Index];
}
もっと効率的な方法があるのだろうか?