Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ped18 en 30 Noviembre 2011, 00:24 am



Título: averiaguar numeros repetidos en un array
Publicado por: ped18 en 30 Noviembre 2011, 00:24 am
wns ! tengo k hacer un programa donde me diga si tiene algun numero reptido el array y si tiene algun nuemero repetido hacer otro nuevo aleatoriamente.
aber si me podeis exar una mano con el programilla k es para una practica de programacion y me he kdado piyado.
gracias dde ante mano.

sl2


Título: Re: averiaguar numeros repetidos en un array
Publicado por: rub'n en 30 Noviembre 2011, 00:49 am
usa la clase Random  para el numero aleatorio, pero busca algo de codigo de lo contrario no te ayudaran, y ve buscando en google,




Título: Re: averiaguar numeros repetidos en un array
Publicado por: Leyer en 30 Noviembre 2011, 02:35 am
Ando de buenas :xD usalo asi _rvr(array,0, 1);

Código
  1. public static void _rvr(int array[],int firstIndex,int secondIndex){
  2. if(!(secondIndex==array.length)){
  3. if(array[firstIndex]==array[secondIndex])array[secondIndex]=(int) Math.floor(Math.random()*10);
  4. secondIndex++;
  5. _rvr(array,firstIndex,secondIndex);
  6. }else {
  7. firstIndex++;
  8. if(firstIndex==array.length-1)return;
  9. _rvr(array,firstIndex,firstIndex+1);
  10. }
  11. }
  12.  


Título: Re: averiaguar numeros repetidos en un array
Publicado por: ped18 en 1 Diciembre 2011, 10:37 am
wns!!! gracia x las respuesta pero lo tengo k hacer con bucles for para sacar si algun repetido y es lo k me raya k no me sale :S aber si sabeis como deberia poner los for y cuantos.
gracias de antemano :D

Sl2  :)


Título: Re: averiaguar numeros repetidos en un array
Publicado por: Fakedo0r en 8 Enero 2012, 02:36 am
Espero que te sirva.

Código:
        int i;
        String sCadena;
        String sF_Cadena = "";
        String [] sArrVar;

        sCadena = "1,2,3,4,5,3,2,5,7,8,9";
        sArrVar = sCadena.split(",");

        for (i=0; i<sArrVar.length; i++)
        {
            if (sF_Cadena.indexOf(sArrVar[i])==-1)
            {
                sF_Cadena = sF_Cadena + sArrVar[i];
            }
        }
        
        System.out.println(sF_Cadena);

Saludos!


Título: Re: averiaguar numeros repetidos en un array
Publicado por: [Case] en 8 Enero 2012, 23:17 pm
Espero que te sirva.

Código:
        int i;
        String sCadena;
        String sF_Cadena = "";
        String [] sArrVar;

        sCadena = "1,2,3,4,5,3,2,5,7,8,9";
        sArrVar = sCadena.split(",");

        for (i=0; i<sArrVar.length; i++)
        {
            if (sF_Cadena.indexOf(sArrVar[i])==-1)
            {
                sF_Cadena = sF_Cadena + sArrVar[i];
            }
        }
        
        System.out.println(sF_Cadena);

Saludos!

Esto no es muy eficiente, deberias ordenarlos primero, y despues checar si algun  numero sucesor o posterior al otro esta reptido. Eso se hace mucho mas rapido.


Título: Re: averiaguar numeros repetidos en un array
Publicado por: Fakedo0r en 9 Enero 2012, 00:45 am
Esto no es muy eficiente, deberias ordenarlos primero, y despues checar si algun  numero sucesor o posterior al otro esta reptido. Eso se hace mucho mas rapido.

Para que ordenar si simplemente compruebo si hay algun duplicado sea sucesor o posterior a otro numero?  Logicamente se puede hacer mejor codigo, esto solo fue un ejemplo sencillo sobre la peticion del usuario.  :P  Seria genial que pusieras un ejemplo asi veriamos lo eficiente.  ;)

Saludos.


Título: Re: averiaguar numeros repetidos en un array
Publicado por: [Case] en 10 Enero 2012, 17:18 pm
Para que ordenar si simplemente compruebo si hay algun duplicado sea sucesor o posterior a otro numero?  Logicamente se puede hacer mejor codigo, esto solo fue un ejemplo sencillo sobre la peticion del usuario.  :P  Seria genial que pusieras un ejemplo asi veriamos lo eficiente.  ;)

Saludos.

Es eficiente por que la complejidad del algoritmo de ordenacion es O(nlogn) mas checar si alguno se repitio, que no toma O(n), por lo que la complejidad es O(nlogn + n)

Mientras que verificando si alguno se repitió nos toma O(n^2).