elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 01:29  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Busqueda binaria.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Busqueda binaria.  (Leído 2,620 veces)
NetJava

Desconectado Desconectado

Mensajes: 159



Ver Perfil
Busqueda binaria.
« en: 17 Marzo 2011, 21:00 »

Buenas,

Estaba mejorando mis conocimientos, y de pronto he pensando en algoritmos de búsqueda. Es fácil encontrar ejemplos de ese tipo de búsqueda, pero si no los he entendido mal, es solo con números, se ordenan y demás... pero y si se busca por String, el algoritmo sirve¿? O tendría que clasificar por número de caracteres para hacer las particiones en la BD¿? jajaja se me acaba de ocurrir.


Saludos y gracias!


En línea
Valkyr


Desconectado Desconectado

Mensajes: 632


Divide y vencerás


Ver Perfil
Re: Busqueda binaria.
« Respuesta #1 en: 19 Marzo 2011, 00:23 »

No se si te he entendido correctamente, pero si lo que quieres decir es: "¿Funciona correctamente la búsqueda binaria en un array de Strings?" Si esa es la cuestión te digo que si, y creo que no me equivoco, tan solo que a la hora de comparar los Strings tendrías que hacerlo con el método compareTo(String), el cual devuelve 0 si son iguales, menor que cero si es lexicográficamente menor y un número positivo si es mayor, por tanto en un array ordenado con Strings podrías realizar una búsqueda binaria perfectamente.

Espero que fuese eso si no...pues especifica un poco más y si puedo pues ayudo xD.

Saludos.

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#compareTo(java.lang.String) por si quieres echarle un ojo  ;)


En línea

NetJava

Desconectado Desconectado

Mensajes: 159



Ver Perfil
Re: Busqueda binaria.
« Respuesta #2 en: 21 Marzo 2011, 11:46 »

Buenas,

Para explicarme mejor cuento mi caso. Tengo una base de datos en la que estoy metiendo palabras, haciendo un diccionario. Lo que hago es que una aplicación lea un archivo que contiene un libro, hace los filtros necesarios para limpiar caracteres que no quiero, y después coge las palabras y las mete en la BD comprobando primero si ya existen o no.

Bueno pues después de meter unos 10 libros, querría ordenar alfabéticamente las palabras para luego poder hacer búsquedas. Tu respuesta es lo que buscaba, no sabía que el método compareTo(String) podría resolver el problema. Muchas gracias.

Ahora me planteo que cuando yo ejecuto una query SELECT que tipo de búsqueda se realiza en una BD MySQL...¿? Para poder realizar una búsqueda binaria tendría que cargar en un array toda la tabla...
Creo que no me he planteado esto muy bien. Pero muchas gracias por que me has resuelto la duda.

Saludos!!
En línea
Tryptophan

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Busqueda binaria.
« Respuesta #3 en: 25 Marzo 2011, 17:35 »

Podes insertar ordenado sobre la Tabla. Me refiero a crear un cursor y fijarte donde meter la palabra para insertar ordenado, y después tirar la búsqueda binaria sobre la BD MySQL. Probablemente tengas una degradación en la performance de tu sistema al "pegarle" mucho a tu BD, pero por ahora no se me ocurre otra solución  :laugh: .

Saludos
En línea
NetJava

Desconectado Desconectado

Mensajes: 159



Ver Perfil
Re: Busqueda binaria.
« Respuesta #4 en: 25 Marzo 2011, 22:38 »

Buenas,

muchas gracias, estoy intentando perder el menor tiempo posible con los thread, el tema de la base de datos como esta ahora para ordenarla va a dar muchos problemas de tiempos, una vez que tenga el algoritmo para ordenar la base alfabéticamente. De todas formas a lo mejor (con el comentario anterior)  se puede solucionar, transpasando los datos de una tabla a otra, pero ordenandolos por medio del método  compareTo(String) y después insertando ordenadamente. A lo mejor eso si puede funcionar... aun que el tiempo será problemático.

Muchas gracias, saludos!!!
En línea
xopito

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Busqueda binaria.
« Respuesta #5 en: 26 Marzo 2011, 11:49 »

Quizá con otro método de comparación puedas solucionarlo, aunque digamos que viene a ser como compareTo:

Siendo b_pin una String, y datos una array de bytes,
si fuese una String datos también, en vez de poner datos, tendrías que poner
datos.charAt, que lo que hace es coger el carácter que hay en una posición determinada,


        for(int i=0;i<(b_pin.length());i++){
            if(b_pin.charAt(i)!= (char) datos){
                return false;
            }
En línea
NetJava

Desconectado Desconectado

Mensajes: 159



Ver Perfil
Re: Busqueda binaria.
« Respuesta #6 en: 28 Marzo 2011, 18:20 »

Buenas xopito,

estoy pensando si se podría hacer de esa manera, y cual sería mejor. Muchas gracias y saludos!!
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ShellSort + Busqueda Binaria
Programación C/C++
Riudo 1 634 Último mensaje 20 Abril 2006, 01:23
por jose2c
Busqueda Binaria « 1 2 »
Programación C/C++
SanMagic 21 12,677 Último mensaje 24 Mayo 2008, 07:34
por SanMagic
busqueda binaria
Programación C/C++
Sunshine66 3 1,517 Último mensaje 6 Mayo 2010, 07:42
por Akai
Busqueda binaria con palabras
Programación C/C++
soez 0 941 Último mensaje 3 Agosto 2010, 04:10
por soez
Busqueda binaria de un array desordenado « 1 2 »
Programación C/C++
David_RM 21 2,254 Último mensaje 13 Noviembre 2011, 16:55
por CobraCY
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines