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í:
- Mirás el elemento del medio
- Si es el que buscás → listo
- Si el que buscás es menor → descartás la mitad derecha
- Si es mayor → descartás la mitad izquierda
- 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