Вы можете встретить похожие вопросы по этой теме — например, этот и этот.
Основная причина, по которой я хочу использовать SortedDictionary, — это наличие функций поиска и вставки в O(log n ) — лучший случай сложности сбалансированного двоичного дерева поиска. Интересующий меня вариант использования поиска - это когда искомый ключ не найден, т. е. когда мы хотим найти элемент, который больше или меньше искомого элемента (например, CeilingEntry и FloorEntry в Java) - это должно быть выполнимо в O(log n), поскольку базовая структура данных это позволяет.
Предыдущие ответы предлагают некоторую форму использования SortedDictionary.Keys, но проблема в том, что мы не можем выполнить встроенный BinarySearch для класса SortedDictionary.KeyCollection. Предлагается обходной путь: преобразовать ключи в список, а затем использовать BinarySearch и найти индекс apt, но преобразование в список приведет к поражению цели, поскольку это операция O(n).
У меня была идея использовать GetEnumerator класса KeyCollection для прямого выполнения бинарного поиска, но я считаю, что это очень некрасиво.
Подробнее здесь: https://stackoverflow.com/questions/783 ... eemap-in-c
Есть ли умный способ реализовать эквивалент CeilingEntry Java TreeMap в C # SortedDictionary, в O (logn)? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение