Test Foro de elhacker.net SMF 2.1

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;

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,

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
Cita de: 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

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 (cpp) [Seleccionar]
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