Búsqueda lineal en C: ejercicio resuelto en arrays no ordenados
Búsqueda lineal en C: ejercicio resuelto paso a paso
Si buscas un ejercicio de búsqueda lineal en C resuelto, aquí tienes la implementación completa con retorno del índice y el caso de elemento no encontrado.
La búsqueda lineal (o secuencial) recorre el array elemento por elemento hasta encontrar el valor buscado o llegar al final. Es el algoritmo de búsqueda más simple y el único que funciona en arrays no ordenados.
Enunciado
- Implementa
busqueda_linealque recibe un array, su tamaño y un valor objetivo, y devuelve el índice de la primera aparición o-1si no existe. - Pruébala con una búsqueda exitosa y con un valor que no está en el array.
- Implementa también
busqueda_lineal_todasque devuelve todos los índices donde aparece el valor (para elementos repetidos).
Solución en C
Resultado esperado
Complejidad
| Caso | Comparaciones | Complejidad |
|---|---|---|
| Mejor caso (primer elemento) | 1 | O(1) |
| Caso promedio | n/2 | O(n) |
| Peor caso (último o no existe) | n | O(n) |
Búsqueda lineal vs búsqueda binaria
| Característica | Lineal | Binaria |
|---|---|---|
| Requiere array ordenado | No | Sí |
| Complejidad | O(n) | O(log n) |
| Implementación | Muy simple | Moderada |
| Mejor para | Arrays pequeños o no ordenados | Arrays grandes ya ordenados |
Errores frecuentes
- Devolver
0en lugar de-1cuando no se encuentra:0es el índice válido del primer elemento. - Usar
>=en lugar de>en la condición del bucle y acceder fuera del array. - Continuar el bucle tras encontrar el elemento cuando solo se quiere la primera aparición.
Aplicación práctica
La búsqueda lineal se usa cuando:
- el array no está ordenado y no vale la pena ordenarlo,
- el array es pequeño (< ~100 elementos) y la diferencia de rendimiento es irrelevante,
- se buscan todas las ocurrencias de un valor, no solo la primera.
Siguiente ejercicio recomendado
- Búsqueda binaria en C: ejercicio resuelto
- Ordenación burbuja en C: ejercicio resuelto
- Recursividad en C: ejercicio resuelto
- Todos los ejercicios de C
Práctica guiada y siguiente paso
Si quieres una ruta completa con progresión real de dificultad:
FAQ
¿Cuándo es mejor la búsqueda lineal que la binaria?
Cuando el array no está ordenado. Ordenarlo primero costaría O(n log n), lo que solo compensa si vas a hacer muchas búsquedas posteriores.
¿La búsqueda lineal puede buscar en arrays de strings?
Sí, pero hay que usar strcmp en lugar de ==: if (strcmp(a[i], objetivo) == 0).
¿Existe una función estándar de búsqueda lineal en C?
No directamente. bsearch de <stdlib.h> hace búsqueda binaria (requiere array ordenado). Para búsqueda lineal hay que implementarla manualmente.