Autor
|
Tema: Me pueden ayudar a hacer una Búsqueda Binaria Recursiva Dinamica (Leído 3,989 veces)
|
gibranini
Desconectado
Mensajes: 41
|
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; }
}
|
|
|
En línea
|
|
|
|
Gh057
Desconectado
Mensajes: 1.190
|
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
|
|
|
En línea
|
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
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: 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.
|
|
|
En línea
|
|
|
|
Gh057
Desconectado
Mensajes: 1.190
|
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
|
|
|
En línea
|
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
|
|
|
gibranini
Desconectado
Mensajes: 41
|
ok muchas gracias
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
busqueda binaria
Programación C/C++
|
Sunshine66
|
3
|
4,732
|
6 Mayo 2010, 07:42 am
por Akai
|
|
|
Busqueda binaria.
Java
|
NetJava
|
6
|
9,354
|
28 Marzo 2011, 18:20 pm
por NetJava
|
|
|
Busqueda recursiva
Programación C/C++
|
s3tH
|
7
|
8,972
|
6 Mayo 2012, 02:46 am
por david_BS
|
|
|
[C] Búsqueda binaria recursiva
Programación C/C++
|
BatchianoISpyxolo
|
3
|
19,487
|
29 Octubre 2012, 23:08 pm
por flony
|
|
|
[ayuda] BD ¿cómo hacer una busqueda en BD
PHP
|
american
|
2
|
3,008
|
30 Noviembre 2016, 17:12 pm
por zikotik
|
|