Búsqueda Lineal escanea cada elemento del arreglo en orden hasta encontrar el target o agotar la lista. Es el algoritmo de búsqueda más simple: no requiere orden, no requiere estructura especial, solo un bucle.
Cómo Funciona
- Comienza en el índice 0.
- Compara cada elemento con el target.
- Si coincide: retorna el índice actual.
- Si no: avanza al siguiente elemento.
- Si agota el arreglo sin encontrar: retorna
-1(no encontrado).
Idea Clave
Búsqueda Lineal es el único algoritmo de búsqueda general que funciona en arreglos desordenados. Su costo es O(n) en el peor caso porque en el peor escenario debes mirar cada elemento exactamente una vez.
El caso mejor O(1) ocurre cuando el target está en el primer índice. El caso promedio O(n/2) = O(n) asume distribución uniforme del target.
Ejemplo Trabajado
Busca target = 5 en [2, 8, 5, 1, 9]:
| Índice | Valor | ¿Match? | Acción |
|---|---|---|---|
| 0 | 2 | No | Continuar |
| 1 | 8 | No | Continuar |
| 2 | 5 | Sí | Retornar 2 |
Resultado: encontrado en índice 2 después de 3 comparaciones.
Busca target = 7 en el mismo arreglo:
| Índice | Valor | ¿Match? | Acción |
|---|---|---|---|
| 0 | 2 | No | Continuar |
| 1 | 8 | No | Continuar |
| 2 | 5 | No | Continuar |
| 3 | 1 | No | Continuar |
| 4 | 9 | No | Fin del arreglo |
Resultado: no encontrado, 5 comparaciones.
Casos Extremos y Trampas
- Arreglo vacío — retorna
-1inmediatamente. - Target duplicado — retorna la primera ocurrencia.
- Arreglo desordenado — funciona perfectamente, no requiere preprocesamiento.
- “No usar cuando el arreglo está ordenado: Búsqueda Binaria (
O(log n)) es dramáticamente más rápida.”
Comparación con Búsqueda Binaria
| Aspecto | Búsqueda Lineal | Búsqueda Binaria |
|---|---|---|
| Precondición | Ninguna | Arreglo ordenado |
| Complejidad | O(n) | O(log n) |
| Caso mejor | O(1) (primer elemento) | O(1) (elemento central) |
| Acceso aleatorio | No requerido | Requerido |
| Cuándo usar | Arreglos pequeños o desordenados | Arreglos grandes y ordenados |
Aplicaciones
- Búsqueda en listas enlazadas — no hay acceso aleatorio, solo secuencial
- Búsqueda en arreglos pequeños —
n < 20, el overhead de ordenar no vale la pena - Búsqueda de substring —
indexOfen strings es esencialmente búsqueda lineal - Debugging — encontrar un valor en un arreglo desordenado rápidamente
Trayectoria de Práctica
- Implementa Búsqueda Lineal en un arreglo de enteros; prueba con target presente y ausente.
- Modifícala para retornar la última ocurrencia en lugar de la primera.
- Compara el número de comparaciones en el peor caso para
n = 1000. - Discute: ¿cuándo vale la pena ordenar el arreglo primero para usar Búsqueda Binaria?
- Extiende a búsqueda de un substring en un string: ¿cuál es la complejidad?