Created
August 7, 2019 16:40
-
-
Save parzibyte/1e19ddf9e9ece5ea85500a34979745aa to your computer and use it in GitHub Desktop.
Búsqueda binaria en Strings de Java - https://parzibyte.me/blog/2018/10/31/busqueda-binaria-java-arreglos-cadenas/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Algoritmo de búsqueda binaria recursiva en Java. | |
* Esta vez para buscar en arreglos de Strings o cadenas | |
* | |
* @see https://parzibyte.me/blog/2018/10/31/comparar-cadenas-java-equals-compareto-forma-correcta/ | |
* @author parzibyte | |
* @web parzibyte.me/blog | |
*/ | |
public static int busquedaBinariaRecursiva(String[] arreglo, String busqueda, int izquierda, int derecha) { | |
// Si izquierda es mayor que derecha significa que no encontramos nada | |
if (izquierda > derecha) { | |
return -1; | |
} | |
// Calculamos las mitades... | |
int indiceDelElementoDelMedio = (int) Math.floor((izquierda + derecha) / 2); | |
String elementoDelMedio = arreglo[indiceDelElementoDelMedio]; | |
// Primero vamos a comparar y luego vamos a ver si el resultado es negativo, | |
// positivo o 0 | |
int resultadoDeLaComparacion = busqueda.compareTo(elementoDelMedio); | |
// Si el resultado de la comparación es 0, significa que ambos elementos son iguales | |
// y por lo tanto quiere decir que hemos encontrado la búsqueda | |
if (resultadoDeLaComparacion == 0) { | |
return indiceDelElementoDelMedio; | |
} | |
// Si no, entonces vemos si está a la izquierda o derecha | |
if (resultadoDeLaComparacion < 0) { | |
derecha = indiceDelElementoDelMedio - 1; | |
return busquedaBinariaRecursiva(arreglo, busqueda, izquierda, derecha); | |
} else { | |
izquierda = indiceDelElementoDelMedio + 1; | |
return busquedaBinariaRecursiva(arreglo, busqueda, izquierda, derecha); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment