Búsqueda binaria en Python: cómo funciona y cuándo usarla

Imaginate que tenés que encontrar un número en una lista de 1.000.000 de elementos. La búsqueda binaria en Python resuelve ese problema en 20 pasos como máximo. La búsqueda lineal, en cambio, podría necesitar 1.000.000. Esa diferencia es exactamente por qué este algoritmo aparece en casi todas las entrevistas técnicas para programadores junior. → Si…

Imaginate que tenés que encontrar un número en una lista de 1.000.000 de elementos. La búsqueda binaria en Python resuelve ese problema en 20 pasos como máximo. La búsqueda lineal, en cambio, podría necesitar 1.000.000. Esa diferencia es exactamente por qué este algoritmo aparece en casi todas las entrevistas técnicas para programadores junior.

→ Si todavía estás familiarizándote con los algoritmos, te recomiendo leer primero 7 algoritmos infalibles que todo nuevo programador debería dominar.


Qué es la búsqueda binaria en Python

Este algoritmo encuentra un elemento en una lista ordenada dividiéndola a la mitad en cada paso.

Funciona así:

  1. Mirás el elemento del medio
  2. Si es el que buscás → listo
  3. Si el que buscás es menor → descartás la mitad derecha
  4. Si es mayor → descartás la mitad izquierda
  5. Repetís con la mitad restante

La condición clave: la lista tiene que estar ordenada. Si no lo está, búsqueda binaria no funciona.


Por qué es más eficiente que la búsqueda lineal

La búsqueda lineal revisa los elementos uno por uno. En el peor caso recorre toda la lista: O(n).

Este algoritmo, en cambio, reduce el problema a la mitad en cada paso: O(log n).

Con una lista de 1.000.000 elementos:

  • Búsqueda lineal: hasta 1.000.000 comparaciones
  • Búsqueda binaria: máximo 20 comparaciones

Ese tipo de razonamiento — entender por qué una solución es mejor que otra — es lo que te preguntan en entrevistas. Para entender más sobre cómo se mide la eficiencia de los algoritmos, leé qué es la complejidad algorítmica: Big O explicado para principiantes.


Cómo implementar búsqueda binaria en Python (versión iterativa)

python

def busqueda_binaria(lista, objetivo):
    izquierda = 0
    derecha = len(lista) - 1

    while izquierda <= derecha:
        medio = (izquierda + derecha) // 2

        if lista[medio] == objetivo:
            return medio  # Devuelve el índice donde está el elemento
        elif lista[medio] < objetivo:
            izquierda = medio + 1  # Descartamos la mitad izquierda
        else:
            derecha = medio - 1  # Descartamos la mitad derecha

    return -1  # No se encontró el elemento

numeros = [1, 3, 5, 7, 9, 11, 13, 15]
print(busqueda_binaria(numeros, 7))   # 3
print(busqueda_binaria(numeros, 6))   # -1

Recorrelo línea por línea y visualizá cómo izquierda y derecha se van acercando hasta encontrar el objetivo o cruzarse.


Versión recursiva: misma lógica, diferente estructura

La versión recursiva hace lo mismo llamándose a sí misma:

python

def busqueda_binaria_recursiva(lista, objetivo, izquierda, derecha):
    if izquierda > derecha:
        return -1  # Caso base: no se encontró

    medio = (izquierda + derecha) // 2

    if lista[medio] == objetivo:
        return medio
    elif lista[medio] < objetivo:
        return busqueda_binaria_recursiva(lista, objetivo, medio + 1, derecha)
    else:
        return busqueda_binaria_recursiva(lista, objetivo, izquierda, medio - 1)

numeros = [1, 3, 5, 7, 9, 11, 13, 15]
print(busqueda_binaria_recursiva(numeros, 9, 0, len(numeros) - 1))  # 4

La iterativa es más eficiente en memoria; la recursiva es más clara para entender la lógica.


Cuándo usarla y cuándo no

Usala cuando:

  • La lista ya está ordenada o podés ordenarla una sola vez
  • Necesitás buscar muchas veces en la misma lista
  • El rendimiento importa y la lista es grande

No la uses cuando:

  • La lista no está ordenada y ordenarla cuesta más que buscar linealmente
  • La lista cambia constantemente
  • La lista es pequeña — para 10 elementos no vale la complejidad extra

Tip de Python: si tenés una lista ordenada, podés usar el módulo bisect de la biblioteca estándar que ya implementa búsqueda binaria de forma optimizada:

python

import bisect

numeros = [1, 3, 5, 7, 9, 11]
posicion = bisect.bisect_left(numeros, 7)
print(posicion)  # 3

Practicá este algoritmo en el campus

Entender la búsqueda binaria en Python es una cosa. Poder implementarla de memoria bajo presión en una entrevista es otra. En el campus de Academia MC tenés desafíos de código para practicar este y muchos otros algoritmos — con comunidad y sin costo. Entrá en campus.marianacasella.com.

📹 Aprendé los algoritmos de búsqueda y ordenamiento en video

Si aprendés mejor viendo que leyendo, este video es para vos. Acá explico paso a paso cómo funcionan los algoritmos de búsqueda y ordenamiento — dos de las familias más importantes dentro de los algoritmos básicos para programadores — con ejemplos visuales y en español.


Deja una respuesta

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

Portada » Blog » Búsqueda binaria en Python: cómo funciona y cuándo usarla

Tal vez esto te interese…