Как уже упоминали другие, линейный поиск - это путь. Однако, в зависимости от ваших настроек, следующее может иметь или не иметь отношение к ускорению процесса.
Если некоторые элементы ищут чаще, чем другие, может пригодиться небольшой кеш. Например, если вы реализуете операцию lookup () для файловой системы (где данные в конечном итоге хранятся где-то на диске), кеш может очень помочь.
Можно ли вообще сортировать / сортировать данные, чтобы наиболее часто используемые элементы находились рядом с началом массива?
Практично ли хранить ваши данные в двух наборах? Один отсортирован, один не отсортирован? Сортировка, вы должны быть в состоянии быстро найти ваш товар. Если не найден, перейдите к вашему несортированному списку и выполните линейный поиск по нему. Зачем? Хотя вы сказали, что вставлять после каждой вставки непрактично, целесообразно ли / периодически вставлять из несортированного списка в отсортированный список?
Должно ли все это быть в одном несортированном массиве? Можете ли вы поместить свои данные в блоки отсортированных данных? То есть вы можете 1000 отсортированных записей на блок. Поиск по каждому отсортированному блоку может быть быстрее, чем поиск по всему не отсортированному списку.
Просто некоторые идеи. Они могут быть неприменимы к вашей ситуации, но, надеюсь, они полезны.