Вы не опубликовали никакого кода, поэтому я собираюсь сделать некоторые предположения.Вы говорите, что у вас есть хеш-таблица с 26 ключами (известными заранее), поэтому я предполагаю, что она реализована оптимально в виде массива из 26 элементов, который получает O(1)
доступ по ключу в этот массив.Затем вы говорите, что у вас есть массивы для каждого элемента, содержащие все элементы, начинающиеся с этой буквы.Что касается хеш-функций, то они довольно слабые, но, безусловно, являются допустимыми.
Итак, когда мы хотим найти конкретное значение, нам нужно искать в соответствующем бункере, основываясь на первой букве (которая занимаетO(1)
), а затем линейно ищите в этом бункере (O(n)
).В общем, сложность составляет O(n)
, при условии, что ваша структура хеш-таблиц верхнего уровня реализована эффективно.
Теперь, так как вы говорите «первая буква», я предполагаю, что вы работаете со строками, которыедает возможность для оптимизации.Строки имеют приятное свойство в том, что их можно легко заказать.Таким образом, если вы гарантируете, что ваши корзины всегда сортируются в лексикографическом порядке, вы можете получить O(log n)
поиск с помощью двоичного поиска, а не линейного.Обратите внимание, что это изменение переводит вашу функцию вставки с (101) * на O(n)
, поэтому вам следует подумать, будете ли вы чаще вставлять или выполнять поиск.