Rellenar un array de valores sin repetirse
Java
Publicado el 21 de Agosto del 2019 por Info (100 códigos)
11.335 visualizaciones desde el 21 de Agosto del 2019
Este simple código muestra como rellenar un vector con números aleatorios sin repetirse.
import java.util.*;
public class vector {
public static void main(String [] args)
{
int array_size=5;
int arreglo[] = new int[array_size];
int contador=0;
//La clase random para generar los numeros aleatorios
Random random=new Random();
while(contador<array_size)
{
int temp = random.nextInt(10)+1;
int i;
// comprovamos si ese valor ya existe en el array
for (i=0;i<array_size-1;i++) {
if (temp==arreglo[i]) {
break;
}
}
// si no se encuentra, lo añadimos al array
if (temp!=arreglo[i]) {
arreglo[contador++]=temp;
}
}
// mostramos el resultado
for(int i=0;i<array_size;i++) {
System.out.println(arreglo[i]);
}
}
}
Comentarios sobre la versión: Versión 1 (2)
Lamentablemente este codigo se va a demorar mas mientras mas grande sea el arreglo, puesto que van a haber mas colisiones que lo hagan demorar (se va a perder mas tiempo comprobando que el elemento no esta, a medida que el arreglo crece se hace mas probable que las siguientes elecciones ya esten presentes en el arreglo).
Podrias incorporar logica adicional (y memoria adicional) que permita crear los numeros sin repetirse (por construccion) en vez de hacerlos aleatorios como esta ahora y que se podrian repetir (y tener que comprobar si es asi).