Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created August 7, 2019 16:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/712914fca0339cf21f17c092b86b77f1 to your computer and use it in GitHub Desktop.
Save parzibyte/712914fca0339cf21f17c092b86b77f1 to your computer and use it in GitHub Desktop.
/**
* 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