Algoritmo de búsqueda binaria (Binary Search) en Java

El algoritmo de búsqueda binaria es un método eficiente en Java programación que se utiliza para encontrar un valor específico dentro de una matriz ordenada. Este enfoque divide continuamente la matriz en dos partes y compara el valor de búsqueda con el elemento del medio.

Cómo funciona el algoritmo de búsqueda binaria

El algoritmo de búsqueda binaria comienza comparando el valor de búsqueda con el elemento central de la matriz. Si el valor de búsqueda es igual al elemento del medio, el algoritmo devuelve la posición de ese elemento. Si el valor de búsqueda es menor que el elemento del medio, el algoritmo continúa la búsqueda en la mitad izquierda de la matriz. Si el valor de búsqueda es mayor, el algoritmo continúa la búsqueda en la mitad derecha de la matriz. Este proceso se repite hasta que se encuentra el valor de búsqueda o no hay más elementos para buscar.

Ventajas y desventajas del algoritmo de búsqueda binaria

Ventajas:

  • Alta Eficiencia: Este algoritmo elimina la mitad de los elementos en cada paso, optimizando la búsqueda de arreglos grandes.
  • Baja complejidad temporal: la complejidad temporal de este algoritmo es O(log n), lo que lo hace eficaz para grandes conjuntos de datos.

Desventajas:

  • Requisito de matriz ordenada: el algoritmo solo funciona con matrices ordenadas.

Ejemplo y explicación

Considere un ejemplo del uso del algoritmo de búsqueda binaria para encontrar un número entero específico en una matriz de enteros ordenados en Java.

public class BinarySearchExample {  
    public static int binarySearch(int[] array, int target) {  
        int left = 0;  
        int right = array.length- 1;  
  
        while(left <= right) {  
            int mid = left +(right- left) / 2;  
  
            if(array[mid] == target) {  
                return mid; // Return position if found  
            } else if(array[mid] < target) {  
                left = mid + 1;  
            } else {  
                right = mid- 1;  
            }  
        }  
        return -1; // Return -1 if not found  
    }  
  
    public static void main(String[] args) {  
        int[] numbers = { 1, 3, 5, 7, 9, 11, 13, 15 };  
        int target = 9;  
  
        int position = binarySearch(numbers, target);  
  
        if(position != -1) {  
            System.out.println("Element " + target + " found at position " + position);  
        } else {  
            System.out.println("Element " + target + " not found in the array");  
        }  
    }  
}  

En este ejemplo, utilizamos el algoritmo de búsqueda binaria para encontrar el número 9 en una matriz de enteros ordenados. El algoritmo recorre la matriz y compara el valor de búsqueda con el valor medio. En este caso, el número 9 se encuentra en la posición 4(índice basado en 0) en la matriz.

Si bien este ejemplo demuestra cómo el algoritmo de búsqueda binaria puede encontrar un elemento en una matriz de enteros ordenados, también se puede aplicar a otros escenarios de búsqueda en Java programación.