Хеширование: | |||||
Хеширование - это метод поиска к.л. объекта по одному из его свойств, причем производится приблизительное тыкание пальцом в небо. Сейчас объясню подробнее: Нвпример нам нужно найти индекс ячейки массива, в которой лежит заданная строчка. Обычными методами это потребует N операций. А если же мы создадим 33 списка(по одному на каждую букву), и поместим в каждый из них все слова, лежащие в массиве и начинающиеся с соответствующей буквы. Очевидно поиск нужно строки ускарится в 33 раза(на самом деле меньше раза в 2). Это и есть хеширование. Основной проблемой является нахождение хорошей ХЕШ-функции(функции, которая скажем каждой строке будет ставить в соответствие число в заданном диапазоне). В нашем случае хэш-функция имела вид: f(S)=Код_символа(S[1])-Код_символа('а')+1; Обычно довольно неплохими являются функции, учитывающие все буквы строки и содержащие много операций XOR,OR,AND,+,-,* и в конце MOD для приведения к заданному диапазону. |