オブジェクトのソートされたコレクションがあります(SortedListまたはSortedDictionaryのいずれかです。主に読み取りに使用するため、追加のパフォーマンスはそれほど重要ではありません)。i 番目の値を取得するにはどうすればよいですか?
たとえば、コレクションに 1、2、3、4、5 の数字があり、中央値 (この例では 3) が必要な場合、どうすればよいでしょうか?
オブジェクトのソートされたコレクションがあります(SortedListまたはSortedDictionaryのいずれかです。主に読み取りに使用するため、追加のパフォーマンスはそれほど重要ではありません)。i 番目の値を取得するにはどうすればよいですか?
たとえば、コレクションに 1、2、3、4、5 の数字があり、中央値 (この例では 3) が必要な場合、どうすればよいでしょうか?
次のようなコードを使用できます
list.Values[index]
ソートされたリストの場合。
SortedDictonary を使用する最も簡単な方法は、ElementAt() メソッドを使用することです。
dict.ElementAt(index).Value
ただし、これはリストの場合よりも遅くなります。
どちらの場合でも、カウントを確認する必要があります。奇数の場合は、 index = (list.length-1) / 2 ) を取ります。偶数の場合は、index1 = list.length/2 AND index2 = list.length/2 - 1 を取り、値を平均します。
次のようなことを試してください:
list.Values[list.Count / 2];
Count が偶数の場合、真の中央値は中央の 2 つの数値の平均になることに注意してください。
SortedDictionary でインデックスによって要素を何度も取得する必要がある場合、パフォーマンスは悲惨なものになります。入力として SortedDictionary を使用して新しい SortedList を作成し、SortedList にアクセスします。何倍も高速に実行されます。