19

我有一个排序的对象集合(它可以是 SortedList 或 SortedDictionary,我将主要用于阅读,因此添加性能并不那么重要)。如何获得第 i 个值?

因此,例如,当我在集合中有数字 1、2、3、4、5 并且我想要中位数(本例中为 3)时,我该怎么做?

4

4 回答 4

29

您可以使用类似的代码

list.Values[index] 

对于排序列表。

使用 SortedDictonary 的最简单方法是使用 ElementAt() 方法:

dict.ElementAt(index).Value

但是,这比列表情况要慢。

无论哪种情况,您都需要检查您的计数。如果是奇数,取 index = (list.length-1) / 2 )。如果是偶数,则取 index1 = list.length/2 AND index2 = list.length/2 - 1 并取平均值。

于 2008-10-24T16:28:59.170 回答
9

尝试这样的事情:

list.Values[list.Count / 2];

请注意,如果 Count 为偶数,则真正的中位数将平均中间的两个数字。

于 2008-10-24T16:14:42.490 回答
6

您可以使用以下语法在特定位置提取值:

sortedDictionaryName.ElementAt(index);

如果要在所需索引处提取元素的键或值:

sortedDictionaryName.ElementAt(index).Key //For only Key
sortedDictionaryName.ElementAt(index).Value //For only Value
于 2017-02-26T19:19:15.800 回答
1

如果需要在一个 SortedDictionary 中多次按索引获取一个元素,性能就惨不忍睹。使用 SortedDictionary 作为输入创建一个新的 SortedList 并访问 SortedList。运行速度快很多很多倍。

于 2010-02-13T13:00:51.257 回答