Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: gibranini en 8 Julio 2014, 07:23 am



Título: Me pueden ayudar a hacer una Búsqueda Binaria Recursiva Dinamica
Publicado por: gibranini en 8 Julio 2014, 07:23 am
Hola amigos, me pudieran ayudar con esta busqueda binaria recursiva, estoy haciendo una lista dinamica;

Código:
int busqueda binaria(int A[],int X, int i, int j)
{
     int medio;
     if (i>j)
     {
         return 0;
     }
     medio = (i+j) / 2;
 
     if (A[medio] < X)
     {   
         return busqueda binaria(A,X,medio+1,j);
     }     
     
     else if (A[medio] > X)
     {
         return busqueda binaria(A,X,i,medio-1);
     }

     else
     {
         return medio;
      }
}

y esto es lo que llevo pero me marca errores y no tengo idea en que estoy mal,

Código:
int Lista::BusquedaBinariaRecursiva(Nodo *aux[], string buscar, int i, int j)
{
    int medio;

    i=0;
    j=contador;//Es un contador variable, lleva el registro del numero de datos ingresados

    if(i>j)
    {
        return 0;
    }

    medio=(i+j)/2;

    if(aux[medio] <buscar)
    {
        return BusquedaBinariaRecursiva(aux, buscar, medio+1, j);
    }
    else if(aux[medio] >buscar)
    {
        return BusquedaBinariaRecursiva(aux, buscar, i, medio-1);
    }
    else
    {
        return medio;
    }

}

 :(


Título: Re: Me pueden ayudar a hacer una Búsqueda Binaria Recursiva Dinamica
Publicado por: Gh057 en 8 Julio 2014, 12:25 pm
hola gibranini , por favor fíjate en los errores de compilación; solo a simple vista se observa que no llamas a la misma función que tienes definida... saludos


Título: Re: Me pueden ayudar a hacer una Búsqueda Binaria Recursiva Dinamica
Publicado por: eferion en 8 Julio 2014, 12:30 pm
hola gibranini , por favor fíjate en los errores de compilación; solo a simple vista se observa que no llamas a la misma función que tienes definida... saludos

A mi me da la sensación de que el segundo código intenta ser una versión del primero pero encapsulado en una clase...

gibranini... cuando has puesto:

Código
  1. j=contador;//Es un contador variable, lleva el registro del numero de datos ingresados

¿En qué estabas pensando?... si se supone que i y j son los límites de la búsqueda no viene a cuento modificar 'j' con un valor que te estás sacando de la manga.


Título: Re: Me pueden ayudar a hacer una Búsqueda Binaria Recursiva Dinamica
Publicado por: Gh057 en 8 Julio 2014, 14:32 pm
tienes razón eferion, me expresé mal, quise decir que si la primera fuera una función recursiva no se llamaría a si misma ya que el espacio haría tirar error de función no definida...

con respecto a la segunda, exacto; sería implementarla en una clase.

gibranini, con respecto a la búsqueda binaria primero debes entender el concepto; la misma se produce partiendo el arreglo o vector previamente ordenado en dos partes y comparando el valor a encontrar con nuestro punto de pivote; si es menor repite en el extremo inferior, si es mayor en el superior.

si quieres hacerla recursiva, debes llamarla nuevamente (mientras tu condición de escape no se cumpla, o sea que no encuentres el valor entre los extremos) disminuyendo el tamaño del arreglo y realizando la nueva comparación en el extremo que podría contener nuestro valor requerido.

es muy útil en arreglos y vectores muy grandes.saludos


 


Título: Re: Me pueden ayudar a hacer una Búsqueda Binaria Recursiva Dinamica
Publicado por: gibranini en 8 Julio 2014, 19:20 pm
ok :D muchas gracias