La búsqueda binaria es una forma rápida de encontrar un valor objetivo en una lista ordenada. Revisas el elemento central, descartas la mitad de los valores restantes y repites. Si la lista no está ordenada, esa lógica deja de ser válida.

En una lista ascendente, la regla es simple: si el valor central es menor que el objetivo, buscas a la derecha; si es mayor, buscas a la izquierda. Como el rango se sigue reduciendo aproximadamente a la mitad, la búsqueda binaria se ejecuta en tiempo O(logn)O(\log n).

Cómo funciona la búsqueda binaria en una lista ordenada

Usa esta lista ordenada:

[3,7,12,18,24,31,39,45,52][3, 7, 12, 18, 24, 31, 39, 45, 52]

Supón que el objetivo es 3131.

Empieza con el rango completo. El valor central es 2424. Como 31>2431 > 24, todo lo que está a la izquierda de 2424 puede descartarse, así que la búsqueda continúa en

[31,39,45,52][31, 39, 45, 52]

Ahora el valor central es 3939. Como 31<3931 < 39, todo lo que está a la derecha de 3939 puede descartarse, así que el rango pasa a ser

[31][31]

Ahora el valor central es 3131, así que la búsqueda se detiene. La idea útil no es solo que se encontró el objetivo. En dos comparaciones, el rango candidato pasó de 99 valores a 11.

Por qué la búsqueda binaria es O(logn)O(\log n)

Cada comparación elimina aproximadamente la mitad de los candidatos restantes. Después de un paso, quedan aproximadamente n/2n/2 elementos. Después de dos pasos, quedan aproximadamente n/4n/4. Después de kk pasos, el tamaño restante es aproximadamente

n2k\frac{n}{2^k}

La búsqueda termina cuando esa cantidad es aproximadamente 11, así que el número de pasos cumple

2kn2^k \approx n

Tomando log2\log_2 en ambos lados, obtenemos

klog2nk \approx \log_2 n

Por eso la búsqueda binaria escala bien. Una búsqueda lineal puede necesitar hasta nn comprobaciones, pero la búsqueda binaria solo necesita suficientes comprobaciones para seguir dividiendo el rango a la mitad.

Ejemplo de código de búsqueda binaria

Aquí tienes una versión iterativa estándar en Python:

¿Necesitas ayuda con un problema?

Sube tu pregunta y obtén una solución verificada, paso a paso, en segundos.

Abrir GPAI Solver →