Изменения

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

Разрешение коллизий

4 байта убрано, 23:34, 11 июня 2012
Стратегии поиска
'' Последовательный поиск ''
 
При попытке добавить элемент в занятую ячейку <tex>i</tex> начинаем последовательно просматривать ячейки <tex>i+1, i+2, i+3</tex> и так далее, пока не найдём свободную ячейку. В неё и запишем элемент.
[[Файл:hashtables1.png|380px|Последовательный поиск, частный случай линейного поиска.]]
 
При попытке добавить элемент в занятую ячейку <tex>i</tex> начинаем последовательно просматривать ячейки <tex>i+1, i+2, i+3</tex> и так далее, пока не найдём свободную ячейку. В неё и запишем элемент.
'' Линейный поиск ''
[[Файл:hashtables2.png|thumb|380px|right|Линейный поиск с шагом q.]]
Выбираем шаг <tex>q</tex>. При попытке добавить элемент в занятую ячейку <tex>i</tex> начинаем последовательно просматривать ячейки <tex>i+(1 \cdot q), i+(2 \cdot q), i+(3 \cdot q)</tex> и так далее, пока не найдём свободную ячейку. В неё и запишем элемент.
По сути последовательный поиск - частный случай линейного, где <tex>q=1</tex>.
 
[[Файл:hashtables2.png|thumb|380px|Линейный поиск с шагом q.]]
'' Квадратичный поиск ''
[[Файл:hashtables3.png|thumb|380px|right|Квадратичный поиск.]]
Шаг <tex>q</tex> не фиксирован, а изменяется квадратично: <tex>q = 1,4,9,16...</tex>. Соответственно при попытке добавить элемент в занятую ячейку <tex>i</tex> начинаем последовательно просматривать ячейки <tex> i+1, i+4, i+9</tex> и так далее, пока не найдём свободную ячейку.
 
[[Файл:hashtables3.png|thumb|380px|right|Квадратичный поиск.]]
'' Возможные проблемы ''
Анонимный участник

Навигация