code review java – Búsqueda binaria simple

Pregunta:

¿Qué opinas de esta sencilla implementación de la búsqueda B en Java?

public static boolean find(int[] arrayToScan, int valueToFind) {
    int startIndex = 0, endIndex = arrayToScan.length, midleIndex;
    while (true) {
        midleIndex = (startIndex + endIndex) / 2;
        if (arrayToScan[midleIndex] == valueToFind) {
            return true;
        }
        if (startIndex >= endIndex || midleIndex == 0 || midleIndex == arrayToScan.length - 1) {
            return false;
        }
        if (valueToFind > arrayToScan[midleIndex]) {
            startIndex = midleIndex+1 ;
        }
        if (valueToFind < arrayToScan[midleIndex]) {
            endIndex = midleIndex-1;
        }

    }
}

Respuesta:

Es una implementación ordenada.

Me gusta el rendimiento potencial. No utiliza llamadas recursivas, por lo que esto ahorra algunas llamadas.

No me gustan (esto es una preferencia personal) los bucles sin fin con devoluciones.

Tenga en cuenta que solo funciona en matrices ordenadas y no hay JavaDoc que lo explique. Esto podría dar lugar a un uso incorrecto de su método.

Y siempre debe cubrir los casos extremos.

Si ingresa una matriz vacía, terminará con:

  Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım