Estamos preparando el PDF de «Búsqueda binaria e invariante». Se descargará automáticamente en cuanto esté listo.
← Lumbre

Estructuras de Datos y Algoritmos · 2.º Búsqueda binaria e invariante

Portada de Búsqueda binaria e invariante

Búsqueda binaria e invariante

✦ La búsqueda binaria parece fácil y casi todos la escriben mal · Estructuras de Datos y Algoritmos · Programación · en menos de 8 minutos

Roadwise Consulting

Firmado y verificado · Biblioteca UNIV

Objetivo: Implementar búsqueda binaria sobre datos ordenados en O(log n) y razonar su corrección con un invariante de rango, evitando errores de límites.

8 min Estructuras de Datos y Algoritmos · Programación 18–30 años
Más
Búsqueda binaria e invariante

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Estructuras de Datos y Algoritmos · 2.º semestre Cursos Explorar Mi cuenta Salir del modo estudio

Búsqueda binaria e invariante

Diagrama de estructuras de datos: arbol binario, lista enlazada y tabla hash.
Estructuras de datos fundamentales y analisis de complejidad algoritmica.

Mapa conceptual

  • Estructuras de Datos
    • Lineales
      • Arrays
      • Listas enlazadas
      • Pilas y Colas
    • No lineales
      • Arboles BST
      • Heaps
      • Grafos
    • Hash
      • Funcion hash
      • Colisiones
      • Rehashing
    • Algoritmos
      • Ordenamiento
      • Busqueda binaria
      • BFS DFS
    • Optimizacion
      • Big-O
      • Dinamica
      • Voracidad

La idea

Sobre un arreglo ORDENADO, se compara con el elemento del medio. Si el buscado es menor, todo el lado derecho queda descartado; si es mayor, el izquierdo. Se repite sobre el rango restante, que se reduce a la mitad en cada paso: log₂ n pasos para n elementos.

El invariante

La corrección se demuestra con un invariante: «si el valor existe, está dentro del rango [lo, hi]». Se cumple al inicio (el arreglo entero) y cada paso lo preserva: descartamos solo elementos que ya sabemos que no pueden ser la solución. Cuando el rango se vacía, el valor no existe.

Comparaciones en el peor caso

f(x) = x · f(x) = log(x)+1

Cuidado con el medio

El índice medio se calcula como lo + (hi − lo)//2, NO como (lo + hi)//2, para evitar desbordamiento de entero en lenguajes de tamaño fijo. Es un error famoso: el código de Java de la biblioteca estándar lo tuvo durante años.

Casi todos los bugs de búsqueda binaria son de límites, no de lógica.
ElementoRol en el invarianteError típico
loextremo inferior vivoolvidar que está incluido
hiextremo superior vivomezclar rangos cerrados y abiertos
midla comparaciónusar (lo+hi)//2 con overflow
retornoposición o no-existeconfundir no encontrado con índice 0

¿Qué debe cumplirse para poder aplicar búsqueda binaria?

Más allá de «encontrar»

La búsqueda binaria resuelve una clase amplia: buscar la primera posición que cumple una condición monótona (bisecar una función, encontrar dónde insertar, contar elementos menores). En todos, el motor es el mismo invariante sobre un rango.

Versiones y rangos

  • Rango cerrado [lo, hi]: se termina cuando lo mayor que hi.
  • Rango semicerrado [lo, hi): se termina cuando lo igual a hi.
  • Mezclar ambas convenciones en un mismo código es la fuente nº1 de bugs; elige una y sé disciplinado.

El costo de log n

Para un millón de elementos, log₂ es unos 20 pasos. Para mil millones, 30. La búsqueda binaria hace que crecer mil veces apenas cueste algunos pasos más: por eso escala tan bien.

La búsqueda binaria funciona sobre una lista enlazada ordenada con costo O(log n).

Errores frecuentes

  • Buscar en datos desordenados y no notarlo.
  • Mover los límites incorrectamente (usar mid en lugar de mid±1) y provocar bucles infinitos.
  • Devolver el último mid como si fuera la solución cuando el valor no está.

Ordena los pasos de la búsqueda binaria:

Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.

Video complementario
Recurso audiovisual para reforzar los conceptos.

Escribe el invariante de la búsqueda binaria para «primera posición cuyo valor es mayor o igual a x» (biseca a la izquierda). Explica cómo cambian lo e hi y por qué el rango se reduce sin perder la solución.

Tu texto se guarda sólo en este dispositivo.

Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.
Más sobre esta lección
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

Todavía no hay comentarios. Sé la primera persona en opinar.