Created
August 7, 2019 16:40
-
-
Save parzibyte/712914fca0339cf21f17c092b86b77f1 to your computer and use it in GitHub Desktop.
Búsqueda binaria con While en 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 secuencial 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 busquedaBinariaConWhile(String[] arreglo, String busqueda) { | |
int izquierda = 0, derecha = arreglo.length - 1; | |
while (izquierda <= derecha) { | |
// Calculamos las mitades... | |
int indiceDelElementoDelMedio = (int) Math.floor((izquierda + derecha) / 2); | |
String elementoDelMedio = arreglo[indiceDelElementoDelMedio]; | |
// Primero vamos a comparar y 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; | |
} else { | |
izquierda = indiceDelElementoDelMedio + 1; | |
} | |
} | |
// Si no se rompió el ciclo ni se regresó el índice, entonces el elemento no | |
// existe | |
return -1; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment