Foro de elhacker.net

Programación => Java => Mensaje iniciado por: rjrn en 12 Febrero 2009, 04:28 am



Título: Recursividad
Publicado por: rjrn en 12 Febrero 2009, 04:28 am
 :laugh:


Título: Re: Recursividad
Publicado por: Amerikano|Cls en 12 Febrero 2009, 06:28 am
No entendí, muy bien, explicate mejor, o pon algun ejemplo bien claro  ;)


Título: Re: Recursividad
Publicado por: -Gosw- en 12 Febrero 2009, 07:35 am
Hola quisiera que me ayudaran con la siguiente asignacion: Dada una matriz NxN(n es par) de nros enteros, desarrollar un programa para determinar la submatriz cuyas suma de valores sea la mayor. Utilice la estrategia divide y venceras. La salida se debe mostrar por pantalla con la matriz original, la submatriz correspondiente y y el maximo valor de la suma de sus elementos. Si existiese mas de una solucion, estas deben mostrarse.  Les agradeceria mucho que me ayudaran :P

Bueno tengo un code basado en esa estrategia, es el metodo de ordenamiento mas avanzado, el quicksort... Aqui esta, en C, pero puedes tomar la idea e implementarla en Java...

Ordenamiento de arreglos por el método rápido (quicksort)

PROG0021 - C/C++ (Codigo)

El método rápido o quicksort, es el algoritmo para ordenamiento de arreglos más rápido que existe. Además, es matemáticamente demostrable, que no puede existir un método mejor. Se basa en el principio "divide y vencerás". Su implementación sin embargo, reviste complejidad, ya que se trata de un algoritmo recursivo por naturaleza.

Citar
El método rápido o quicksort, es el algoritmo para ordenamiento de arreglos más rápido que existe. Además, es matemáticamente demostrable, que no puede existir un método mejor. Se basa en el principio "divide y vencerás". Su implementación sin embargo, reviste complejidad, ya que se trata de un algoritmo recursivo por naturaleza.

Código
  1. void SortArray (int array[],int first,int last)
  2. {
  3.   int i,j,p,t;
  4.  
  5.   // i se hace igual al índice del primer elemento  
  6.   i= first;  
  7.   // y j igual al índice del último elemento
  8.   j= last;  
  9.   // p se hace igual al elemento pivote del arreglo
  10.   p= array[(first+last)/2];  
  11.  
  12.   do {
  13.      // se hace la partición del arreglo
  14.      while (array[i]<p) i++;
  15.      while (p<array[j]) j--;
  16.         if (i<=j)
  17.         {
  18.            // se intercambian los elementos i-esimo y j-esimo del arreglo
  19.            t= array[i];
  20.            array[i]= array[j];
  21.            array[j]= t;
  22.            i++;
  23.            j--;
  24.         }
  25.   } while (i<=j);
  26.   if (first<j) SortArray(array,first,j);
  27.   if (i<last) SortArray(array,i,last);
  28. }

http://www.megaupload.com/?d=QPSO2CJZ

Saludos y espero te sirva para lo que necesitas...


Título: Re: Recursividad
Publicado por: -Gosw- en 12 Febrero 2009, 07:36 am
Perdon, di a citar y no a editar... Borren esta...


Título: Re: Recursividad
Publicado por: Amerikano|Cls en 12 Febrero 2009, 15:21 pm
Solo pon tu code dentro de la etiqueta code=java para que se resalten las instrucciones respectivas  ;)


Título: Re: Recursividad
Publicado por: sapito169 en 12 Febrero 2009, 23:56 pm
tu enunciado no se entiende para nada


Título: Re: Recursividad
Publicado por: Amerikano|Cls en 23 Febrero 2009, 18:53 pm
Y ahora te burlas de nosotros?  :huh: :-\ :¬¬


Título: Re: Recursividad
Publicado por: -Gosw- en 23 Febrero 2009, 19:35 pm
Y ahora te burlas de nosotros?  :huh: :-\ :¬¬

Que gente tan idiota... Alguien que borre este tema...


Título: Re: Recursividad
Publicado por: weirdtyping en 17 Marzo 2009, 19:33 pm
no todavia no lo borren, tengo una duda de recursividad tambien, el ejercicio consiste en llenar un vector de 20 elementos de 0 y 1 al azar, tonces las operaciones que se deben hacer con recursividad son, contar los 1 y los 0, mostrar los datos, camiar los 0 por 2 y los 1 por 7, etc etc... tonces no entendi muy bien el concepto puesto que no me sale xDDD porfa diganme por que no funciona esto..

public String shoNum(int n){
        if(n == 20){
            return datos;
        }
        else{
            datos += arreglo[n]+"\n";
            return shoNum(n++);
        }
    }


es un pequenio tramo de mi codigo, segun esto me debe de guardar todos los datos que tenga el vector en "datos " y despues al final  mandarme "datos" ya con todo incluido, la verdad estoy un poco confundido con esto de recursividad. espero que me ayuden gracias