Я не уверен, что он имел в виду.
Если вы просто хотите найти число один раз, и у вас нет никаких гарантий относительно того, отсортирован ли массив, тогда я не думаю, что вы сможете обойти линейный поиск. В среднем вам нужно будет искать в середине массива, прежде чем вы найдете значение, то есть ожидаемое время выполнения O (N); при сортировке вы должны касаться каждого отдельного значения, по крайней мере, один раз и, возможно, более того, то есть ожидаемое время выполнения O (N log N).
Но если вам нужно найти несколько значений, то время, потраченное на их сортировку, быстро окупается. С отсортированным массивом вы можете выполнить бинарный поиск за O (log N), поэтому наверняка по третьему поиску вы впереди, если вы потратили время на сортировку.
Вы можете добиться еще больших успехов, если вам разрешено создавать различные структуры данных для решения этой проблемы. Вы можете создать какой-то индекс, такой как хеш-таблица; но чемпионом структуры данных для такого рода проблем, вероятно, будет какая-то древовидная структура. Затем вы можете вставить новые значения в дерево быстрее, чем вы могли бы добавить новые значения и пересортировать массив, и поиск по-прежнему будет O (log N), чтобы найти любое значение. Доступны различные виды деревьев: двоичное дерево, B-дерево, Trie и т. Д.
Но, как сказал @Hot Licks, для такого рода вещей часто используется хеш-таблица, и ее довольно дешево обновлять: вы просто добавляете значение в основной массив и обновляете хеш-таблицу, чтобы указать новое значение , И хеш-таблица очень близка к O (1) времени, которое вы не можете превзойти. (Хеш-таблица равна O (1), если нет хеш-коллизий; при условии хорошего хеш-алгоритма и достаточно большой хеш-таблицы коллизий почти не будет. O (N) где N - среднее число коллизий хешей на «корзину». Если я ошибаюсь, я ожидаю, что это будет исправлено очень быстро, это StackOverflow!)