Изменения

Перейти к: навигация, поиск

Бор

86 байт убрано, 02:43, 7 апреля 2016
Использование бора в качестве ассоциативного массива
===Использование бора в качестве ассоциативного массива===
Благодаря тому, что бор позволяет решать задачу, описанную выше, он может выступать в качестве ассоциативного массива. Обычно, когда требуется такая структура, то используют [[Дерево поиска, наивная реализация | двоичное дерево поиска]] или [[Хеш-таблица | хеш-таблицу]].Бор объединяет некоторые преимущества этих структур данных и позволяет одновременно делать следующие операции, которые каждая из структур не может делать по отдельности: Начнём с очевидных минусов#Добавление элемента в ассоциативный массив за O(n), где n — длина строки (а дерево может за O(n log m)#Получение всех ключей в отсортированном порядке за O(m), где m — число ключей (а хеш-таблица может только за O(m log m)).Несмотря на данные достоинства у реализации ассоциативного массива в виде бора есть следующие недостатки:
# Бор хранит строки или символы, а это значит, что у значения ключа будет ограничение на тип (строки, символы, либо числа, представленные как строки).
# Если реализовывать ассоциативный массив на обычном боре, а ключами будут являться строки, то будет использоваться слишком много памяти, а так же будет большая константа
# Если у нас все строки будут являться префиксами друг друга, то поиск и добавление могут занимать <tex> O(n)</tex> действий в худшем случае (например хранятся слова <tex>"a", "aa", "aaa", "aaaa", ...</tex>), где <tex>n</tex> - количество слов
Плюсы:
# Достаточно простая реализация.
# Операции добавления имеют меньшую константу (из-за отсутствия всевозможных операций балансировки), чем у двоичных деревьев поиска, поэтому в среднем данная реализация может работать быстрее.
# Сортировка элементов гарантируется уже самим построением бора.
==См. также==
313
правок

Навигация