Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2017-05-27 14:35:29 ЛС | профиль | цитата
Tad писал(а):
Быстрее всего получилось с перенаправлением по первой букве на свой список.

Если, опять же, говорить о теории -- то это называется хешированием словаря.

Вычисляется некоторый хэш для искомого слова, который является индексом для массива указателей.
Указателей на списки (массивы) слов с одинаковым хэшом.
Брать в качестве хэша первую букву слова, хоть и очень быстро, но не очень эффективно - сам же говорил, что на букву 'П' большая половина словаря падает.
Смысл хэширования - разбить весь словарь максимально равномерно по отдельным спискам.

Ну, например - CRC8... Если он более или менее равномерно распихает словарь по 256 спискам, то в каждом будет десяток-другой слов.
Если мы искали "полным перебором" - эффект будет впечатляющий.
А если "делением пополам" - то сэкономим аж 8 сравнений. И потеряем на вычислении хэша. Что лучше - смотреть надо более конкретно...

Можно брать нужное (10-12) количество битов от CRC16. Тут нужно отдельное изучение, с конкретным словарем, с оптимизацией алгоритмов, и т.п..
карма: 9

0