Ответ 1
Попробуйте что-то вроде этого:
list.Values [list.Count/2];
Обратите внимание, что истинная медиана будет усреднять два числа в середине, если граф четный.
У меня есть отсортированная коллекция объектов (она может быть либо SortedList, либо SortedDictionary, я буду использовать ее в основном для чтения, поэтому добавление производительности не так важно). Как я могу получить i-ое значение?
Так, например, когда у меня есть числа 1, 2, 3, 4, 5 в коллекции, и я хочу медиану (так что 3 в этом примере), как я могу это сделать?
Попробуйте что-то вроде этого:
list.Values [list.Count/2];
Обратите внимание, что истинная медиана будет усреднять два числа в середине, если граф четный.
Вы можете использовать код как
list.Values[index]
для отсортированного списка.
Самый простой способ использования SortedDictonary - использовать метод ElementAt():
dict.ElementAt(index).Value
Однако это медленнее, чем в случае со списком.
В любом случае вам нужно проверить свой счет. Если это нечетно, возьмите index = (list.length-1)/2). Если оно четное, возьмите index1 = list.length/2 И index2 = list.length/2 - 1 и усредните значения.
Вы можете извлечь значение в определенной позиции, используя следующий синтаксис:
sortedDictionaryName.ElementAt(index);
Если вы хотите извлечь ключ или значение элемента с нужным индексом:
sortedDictionaryName.ElementAt(index).Key //For only Key
sortedDictionaryName.ElementAt(index).Value //For only Value
Если вам нужно получить элемент по индексу в SortedDictionary много раз, производительность невыносима. Создайте новый SortedList с SortedDictionary в качестве входных данных и получите доступ к SortedList. Работает много, много раз быстрее.