AD

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

Ver cursos de Objective-C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🍎Lecciones de Objective-C
Lección 33 / 68

El algoritmo de búsqueda binaria

En esta lección buscarás en un array ordenado 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.

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

Hay un detalle de tipos que aquí importa de verdad. arr.count devuelve NSUInteger, sin signo, así que arr.count - 1 con un array vacío no da -1 sino un número enorme, y el bucle recorre memoria ajena. Por eso la variable se declara como NSInteger, con signo. Es exactamente el tipo de fallo que en Objective-C hay que vigilar a mano.

La condición imprescindible es que el array esté ordenado. Sobre datos desordenados el algoritmo no da error: devuelve una respuesta equivocada.

Y el clásico: (low + high) / 2 puede desbordar con arrays enormes. La forma segura es low + (high - low) / 2.

Foundation ofrece indexOfObject:inSortedRange:options:usingComparator:, que hace la búsqueda binaria por ti.

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

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