Массив с внутренними индексами 0 .. length - 1
, теоретически, является просто частным случаем ассоциативных массивов , а именно ассоциативного массива с ключами 0 .. length - 1
.
Конечно, алгоритм поиска более сложен, и обычно вы не можете получить O (1) в худшем случае. Но вы получаете бронированный O (1) при условии, что хеш-функция и реализация хеш-таблицы являются хорошими (и в широко используемых реализациях языка, где это фундаментальный тип данных, это, вероятно, так). Кроме того, вполне возможно использовать (неассоциативный) массив за кулисами для хеш-таблиц, когда большинство или все ключи являются целыми числами, что исключает 90% накладных расходов при работе с этими индексами. Lua 5 делает это, я не знаю, делают ли это и текущие версии PHP.
Если всего этого недостаточно, и поиск все еще слишком медленный для вашей цели, тогда применяется другой ответ: улучшите ваш алгоритм. (Действительно. Не переходите к другим опциям легкомысленно.) Вы также можете найти библиотеку, которая предоставляет такую возможность (хотя сомнительно, действительно ли она быстрее, особенно если она написана на PHP), или вы можете переместить вычислительно сложные части в другой язык (и если вам нужно сделать , что , вы можете также пройти весь путь и написать его на C). Но обычно хеш-таблица должна быть достаточно быстрой.