хэширования, поиск слова в словаре с 100 записями может потребовать 100 сравнений слов? (И в среднем около 50)
Без хэширования — да, перебираются все доствупные имена, или пока не найдется совпадение. Но, это простое сравнение на совпадение (без определения больше/меньше). Т.е., если длина разная — то сравнивать содержимое не надо. Что касается "обычности" — полно реализаций, которые используют хэширование в большей или меньшей мере.
Кстати, тут я не прав, что если нет хэширования, то перебирается все имена. Т.к. можно еще хранить имена (ссылки) в упорядоченном массиве и делать бинарный поиск. А можно использовать сбалансированное дерево, и тоже искать в нем, без перебора всех вариантов. Т.е., хэширование — далеко не единственная альтернатива простому списку.
Технически, еще можно список переупорядочивать по частоте использования (чтобы наиболее частные были в голове списка). Во всех более сложных реализациях поиска надо специально обрабатывать случаи переопределения слова (когда в тот же список слов добавляется слово с именем, которое там уже было, и "затеняет" старое). В простом списке переопределение слова не требует специальной обработки.
Обсуждают сегодня