Búsqueda binaria: cómo funciona y por qué es tan eficiente

La búsqueda binaria es uno de los algoritmos más elegantes de la programación. Permite encontrar un elemento en una lista ordenada con una eficiencia espectacular: en lugar de revisar elemento por elemento, divide el espacio de búsqueda por la mitad en cada paso.

El problema que resuelve

Imagina que tienes una lista de 1.000.000 de números ordenados y quieres encontrar uno concreto. Con búsqueda lineal (revisar uno a uno) necesitarías hasta 1.000.000 comparaciones. Con búsqueda binaria, necesitas como máximo 20 comparaciones.

¿Cómo funciona?

  1. Mira el elemento del centro de la lista.
  2. Si es el que buscas, ¡encontrado!
  3. Si el elemento buscado es menor, descarta la mitad derecha.
  4. Si es mayor, descarta la mitad izquierda.
  5. Repite con la mitad restante.

Implementación en Python

def busqueda_binaria(arr, objetivo):
    izquierda, derecha = 0, len(arr) - 1
    
    while izquierda <= derecha:
        medio = (izquierda + derecha) // 2
        
        if arr[medio] == objetivo:
            return medio        # Encontrado en posición 'medio'
        elif arr[medio] < objetivo:
            izquierda = medio + 1  # Buscar en mitad derecha
        else:
            derecha = medio - 1    # Buscar en mitad izquierda
    
    return -1  # No encontrado

numeros = [2, 5, 8, 12, 16, 23, 38, 45, 67, 91]
print(busqueda_binaria(numeros, 23))  # Output: 5 (índice)

Complejidad: O(log n)

Cada paso elimina la mitad de los candidatos. Para 1.000.000 elementos: log₂(1.000.000) ≈ 20 pasos. Para 1.000.000.000 elementos: solo 30 pasos.

Requisito fundamental

La lista debe estar ordenada. Si no lo está, la búsqueda binaria no funciona. En ese caso hay que ordenarla primero (coste O(n log n)) o usar búsqueda lineal directamente.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *