Tad писал(а):
Быстрее всего получилось с перенаправлением по первой букве на свой список.Если, опять же, говорить о теории -- то это называется хешированием словаря.
Вычисляется некоторый хэш для искомого слова, который является индексом для массива указателей.
Указателей на списки (массивы) слов с одинаковым хэшом.
Брать в качестве хэша первую букву слова, хоть и очень быстро, но не очень эффективно - сам же говорил, что на букву 'П' большая половина словаря падает.
Смысл хэширования - разбить весь словарь максимально равномерно по отдельным спискам.
Ну, например - CRC8... Если он более или менее равномерно распихает словарь по 256 спискам, то в каждом будет десяток-другой слов.
Если мы искали "полным перебором" - эффект будет впечатляющий.
А если "делением пополам" - то сэкономим аж 8 сравнений. И потеряем на вычислении хэша. Что лучше - смотреть надо более конкретно...
Можно брать нужное (10-12) количество битов от CRC16. Тут нужно отдельное изучение, с конкретным словарем, с оптимизацией алгоритмов, и т.п..