Búsqueda binaria en Java sobre arreglos de cadenas

Publicado por parzibyte en

Introducción

Acabamos de hacer el algoritmo de búsqueda binaria recursiva y secuencial en Java pero sobre arreglos numéricos. Ahora veamos cómo hacer exactamente lo mismo pero en un arreglo de cadenas.

Aquí cambia un poco la cosa, pues no podemos tratar a las cadenas como números, y las mismas tampoco son comparadas con los operadores de menor, mayor, igual, menor o igual o mayor o igual.

Lo que usaremos será el método compareTo, cuya referencia encuentras más abajo.

Ya no explicaré a detalle cómo es, visita el post que cito al inicio para que obtengas una idea más clara. Aquí sólo veremos el código de las funciones y la forma de llamarlas.

Lecturas recomendadas

Mira cómo funciona compareTo para comparar cadenas

Búsqueda binaria en PHP

JavaScript: implementación del algoritmo de búsqueda binaria

Python y listas: búsqueda binaria

Más tutoriales de Java

Explicación del algoritmo

Veamos una pequeñísima explicación…

Lo que hacemos es tomar el valor de retorno de compareTo. Si es 0, las cadenas son iguales. Si es un número negativo entonces la primer cadena es menor que la segunda; en este caso comparamos a busqueda con elementoDelMedio, si el resultado es negativo significa que busqueda es menor, y partimos desde el centro – 1 hacia la izquierda. Si no, desde el centro + 1 hasta la derecha.

Cuando izquierda es mayor que derecha se termina la recursión y se indica que el elemento no fue encontrado.

Búsqueda binaria recursiva en arreglo de cadenas

Aquí dejo la función.

La forma de llamarla la veremos al final.

Búsqueda binara secuencial en arreglo de cadenas

Lo mismo de arriba, pero con while. El código queda así:

Igualmente el ejemplo de llamada queda al final.

Implementar funciones

Aquí una pequeña prueba. Definimos un arreglo y buscamos:

La salida es:

[Recursivo] — El elemento buscado (Morty) se encuentra en el index 5
[Con ciclo While] — El elemento buscado (Morty) se encuentra en el index 5

O puedes verla en este replit (presiona Play):

Con esto terminamos.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: