Как мне получить элемент с наименьшим ключом в коллекции в O (1) или O (log n) время?

Я знаю, что могу использовать Словарь и получить произвольный элемент за O (1) раз.

Я знаю, что могу получить следующий по величине ( или самый низкий) элемент в SortedDictionary за время O (1). Но что, если бы я хотел удалить первое значение (на основе TKey ' s IComparable ) в SortedDictionary ?

Могу ли я использовать метод .First () для получения наименьшего ключа? А в чем его сложность? Будет ли он работать за O (1), O (log n) или O (n) время?

Подходит ли для этого SortedDictionary структура данных?

Примечание. Пример использования - это своего рода приоритетная очередь для бедняков или упорядоченная очередь. Для этого не разрешается использовать открытый исходный код (код должен быть написан с нуля или уже в среде .NET 3.5).

7
задан Robert Harvey 25 May 2011 в 23:03
поделиться