2008-10-24 47 views
7

我有對象的排序集合(它可以是排序列表或SortedDictionary,我將用它主要是用於讀取這麼加的表現並不重要)。我如何獲得第i個值?獲得第i個值或SortedDictionary

因此,例如,當我收集數字1,2,3,4,5時,我想要中位數(在這個例子中是3),我該怎麼做?

回答

7

嘗試類似這樣:

list.Values [list.Count/2];

請注意,如果Count爲偶數,則真正的中位數將平均中間的兩個數字。

+1

歡呼聲中,這項工作僅用於SortedList。有沒有辦法做到這一點SortedDictionary? – Grzenio 2008-10-24 16:24:40

21

您可以使用如下代碼

list.Values[index] 

的排序列表。

,最簡單的有SortedDictonary方式將是使用的ElementAt()方法:

dict.ElementAt(index) 

然而,這是比在列表中的情況下慢。

無論哪種情況,您都需要檢查您的計數。如果奇數,則採用index =(list.length-1)/ 2)。如果是偶數,則採用index1 = list.length/2 AND index2 = list.length/2 - 1並對這些值求平均值。

1

如果您需要通過索引在SortedDictionary中多次獲取元素,則性能會很糟糕。使用SortedDictionary作爲輸入創建一個新的SortedList並訪問SortedList。運行速度快很多倍。

2

您可以通過使用下面的語法在特定位置提取值:

sortedDictionaryName.ElementAt(index); 

如果你想在一個期望的索引中提取元素的鍵或值:

sortedDictionaryName.ElementAt(index).Key //For only Key 
sortedDictionaryName.ElementAt(index).Value //For only Value