Tengo una matriz que contiene nombres de elementos. Quiero dar al usuario la opción de crear elementos sin especificar su nombre, por lo que mi programa tendrá que proporcionar un nombre predeterminado único, como "Artículo 1".Algoritmo eficiente para encontrar el primer nombre disponible
El desafío es que el nombre tiene que ser único, así que tengo que verificar toda la matriz para ese nombre predeterminado, y si hay un elemento con el mismo nombre, tengo que cambiar el nombre para ser "Artículo 2" y etcétera hasta que encuentre un nombre disponible.
La solución obvia será algo así como que:
String name = "Item ";
for (int i = 0; !isAvailable(name + i) ; i++);
Mi problema con que el algoritmo es que se ejecuta en O (N^2).
Me pregunto si existe un algoritmo conocido (o nuevo) más eficiente para resolver este caso.
En otras palabras, mi pregunta es esta: ¿Hay algún algoritmo que encuentre que el primer número mayor que cero que NO existe en una matriz dada, y se ejecuta en menos de N^2?
¿El nombre solo tiene que ser único, o específicamente debe ser la primera cadena disponible en la secuencia "Artículo 1", "Artículo 2", etc.? Puede reducir en gran medida el tiempo de ejecución esperado eligiendo un nuevo nombre al azar ("Artículo xF3g7a"). También puede mejorar una matriz para la estructura de datos: si el orden no es importante, no use una matriz, y si es importante, tal vez mantenga un índice secundario de nombres y la matriz. –
+1 Ace pregunta! –