AD

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

Ver cursos de Swift en Udemy

Enlace de afiliado. No te cuesta nada extra.

🐦Lecciones de Swift
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.

Se mira el elemento central: si es el buscado, ya está; si no, se descarta la mitad que no puede contenerlo. 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: devuelve una respuesta equivocada. Y el bucle debe ser while low <= high, con el igual: sin él, el caso de un solo elemento restante nunca se comprueba.

Hay un detalle que en Swift importa especialmente: (low + high) / 2 puede desbordar con listas enormes, y en Swift el desbordamiento detiene el programa en lugar de dar la vuelta en silencio. La forma segura es low + (high - low) / 2. Es el mismo fallo que estuvo veinte años en la biblioteca estándar de Java sin que nadie lo notara.

La biblioteca de Swift no incluye una búsqueda binaria genérica, aunque sí firstIndex(where:) para búsqueda lineal. Para colecciones ordenadas grandes merece la pena escribirla o usar una biblioteca de algoritmos.

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

🧪 Este sitio no puede compilar ni ejecutar Swift 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)