Эффективный алгоритм поиска первого доступного имени

У меня есть массив, содержащий названия предметов. Я хочу дать пользователю возможность создавать элементы без указания их имени, поэтому моя программа должна будет предоставить уникальное имя по умолчанию, например «Элемент 1».

Проблема в том, что имя должно быть уникальным, поэтому у меня есть чтобы проверить весь массив для этого имени по умолчанию, и если есть элемент с таким же именем, мне нужно изменить имя на «Элемент 2» и так далее, пока я не найду доступное имя.

Очевидным решением будет что-то вроде этого:

String name = "Item ";
for (int i = 0; !isAvailable(name + i) ; i++);

Моя проблема с этим алгоритмом в том, что он работает на O (N ^ 2).

Интересно, существует ли известный (или новый) более эффективный алгоритм для решить этот случай.

Другими словами, мой вопрос таков: существует ли какой-либо алгоритм, который находит первое число больше нуля, которое НЕ существует в данном массиве, и работает при меньшем N ^ 2?

5
задан Bill the Lizard 29 May 2013 в 21:52
поделиться