277
правок
Изменения
Qqqq
,→Открытое хеширование
=== Открытое хеширование ===
[[Файл:open_hash.png|thumb|380px|right|Разрешение коллизий при помощи цепочек.]]
Каждая ячейка <tex>i</tex> массива <tex>H</tex> содержим указать содержит указатель на начало списка всех элементов, хеш-значение ключа которых равно <tex>i</tex>, иначе ячейка она содержит значение <tex>NIL</tex>. Коллизии приводят к тому, что появляются списки размером больше одного элемента.
Время, необходимое для вставки в наихудшем случае равно <tex>O(1)</tex>. Это операция выполняет быстро, так как считается, что вставляемый элемент отсутствует в таблице, но если потребуется, то перед вставкой мы может выполнить поиск этого элемента.
Время работы поиска в наихудшем случае пропорционально длине списка, а если все <tex>n</tex> ключей хешированы в одну и ту же ячейку (создавая список длиной <tex>n</tex>) время поиска будет равно <tex>\Theta(n)</tex> плюс время вычисления хеш-функции, что ничуть не лучше, чем использование связного списко списка для хранения всех <tex>n</tex> элементов.
Удаления элемента может быть выполнено за <tex>O(1)</tex>, как и вставка, при использовании двухсвязного списка.<ref>Анализ хеширования с цепочками, вы можете найти в книге Томаса Кормена: «Алгоритмы. Построение и анализ.»</ref>