AD

¿Ya dominas lo básico? Un curso estructurado de Ruby es la vía rápida para dar el salto.

Ver cursos de Ruby en Udemy

Enlace de afiliado. No te cuesta nada extra.

💎Lecciones de Ruby
Lección 33 / 68

El algoritmo de búsqueda binaria

En esta lección buscarás en una lista ordenada descartando la mitad en cada paso.

La idea es mirar el elemento central: si es el buscado, ya está; si es menor, el objetivo está en la mitad derecha; si es mayor, en la izquierda. Cada comparación elimina la mitad de lo que queda.

El código de ejemplo busca un valor y devuelve su posición, o -1 si no está.

La condición imprescindible es que la lista esté ordenada. Sobre datos desordenados el algoritmo no da error: simplemente devuelve una respuesta equivocada, que es mucho peor. Y hay otro punto delicado: el bucle debe ser while low <= high, con el igual incluido. Sin él, el caso de un solo elemento restante nunca se comprueba y el último valor de la lista nunca se encuentra.

La diferencia de velocidad es enorme: en un millón de elementos, la búsqueda lineal hace hasta un millón de comparaciones y la binaria unas veinte. Es la razón por la que las bases de datos mantienen índices ordenados. En Ruby, para el uso diario, tienes Array#bsearch ya implementado.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Ruby directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)