我有一个排序的对象集合(它可以是 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 为偶数,则真正的中位数将平均中间的两个数字。
您可以使用以下语法在特定位置提取值:
sortedDictionaryName.ElementAt(index);
如果要在所需索引处提取元素的键或值:
sortedDictionaryName.ElementAt(index).Key //For only Key
sortedDictionaryName.ElementAt(index).Value //For only Value
如果需要在一个 SortedDictionary 中多次按索引获取一个元素,性能就惨不忍睹。使用 SortedDictionary 作为输入创建一个新的 SortedList 并访问 SortedList。运行速度快很多很多倍。