elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  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 8,984 veces)
NetJava

Desconectado Desconectado

Mensajes: 195



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

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: 646


Divide y vencerás


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

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: 195



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

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: 52


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

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: 195



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

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: 36


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

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: 195



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

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
Busqueda Binaria Aplicada a las Blind SQL Injection
Nivel Web
OzX 0 3,625 Último mensaje 10 Julio 2009, 05:06 am
por OzX
busqueda binaria
Programación C/C++
Sunshine66 3 4,396 Último mensaje 6 Mayo 2010, 07:42 am
por Akai
Busqueda binaria con palabras
Programación C/C++
soez 0 2,978 Último mensaje 3 Agosto 2010, 04:10 am
por soez
Busqueda binaria de un array desordenado « 1 2 3 »
Programación C/C++
David_RM 21 16,457 Último mensaje 13 Noviembre 2011, 16:55 pm
por CobraCY
[C] Búsqueda binaria recursiva
Programación C/C++
BatchianoISpyxolo 3 19,192 Último mensaje 29 Octubre 2012, 23:08 pm
por flony
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines