Menu
Coddy logo textTech

Búsqueda lineal

Última actualización

La búsqueda lineal (también llamada búsqueda secuencial) es el algoritmo de búsqueda más simple: empieza en el primer elemento y compara cada uno con el objetivo hasta encontrar una coincidencia o quedarte sin elementos. No hace ninguna suposición sobre los datos: el arreglo puede estar desordenado, y los elementos pueden ser cualquier cosa que se pueda comparar por igualdad.

La animación de arriba resalta cada comparación mientras el recorrido avanza de izquierda a derecha y se detiene en cuanto aparece el objetivo. Su simplicidad tiene un costo en velocidad: en el peor caso se revisa cada elemento, por lo que se ejecuta en O(n). Cuando los datos están ordenados, la búsqueda binaria encuentra la misma respuesta en O(log n), y si primero necesitas datos ordenados, mira el merge sort.

Complejidad temporal y espacial

CasoComplejidadNotas
Mejor casoO(1)El primer elemento es el objetivo.
Caso promedioO(n)En promedio se revisa la mitad de los elementos antes de un acierto.
Peor casoO(n)El objetivo es el último, o no está presente en absoluto.
EspacioO(1)Solo se guarda el índice actual.

Paso a paso

PasoQué ocurre
1Empieza en el índice 0, el primer elemento del arreglo.
2Compara el elemento actual con el valor objetivo.
3Si son iguales, devuelve el índice actual (encontrado).
4Si no, avanza una posición a la derecha y repite.
5Si se llega al final del arreglo sin una coincidencia, el objetivo no está presente (devuelve -1).

Ejemplo resuelto

Buscando 5 en [7, 3, 9, 1, 5, 8, 2]:

ComparaciónÍndiceElementoResultado
1077 ≠ 5: sigue recorriendo.
2133 ≠ 5: sigue recorriendo.
3299 ≠ 5: sigue recorriendo.
4311 ≠ 5: sigue recorriendo.
5455 = 5: encontrado en el índice 4.

Cuándo usar la búsqueda lineal

Úsala cuandoEvítala cuando
Los datos están desordenados o cambian constantementeLos datos están ordenados, porque la búsqueda binaria es exponencialmente más rápida
La colección es pequeña, así que gana la simplicidadEl conjunto de datos es grande y se busca repetidamente
Solo tienes acceso secuencial (flujos, listas enlazadas)Puedes permitirte un índice o una tabla hash para búsquedas en O(1)

Una implementación limpia y ejecutable de Linear Search en Python, JavaScript, Java, C++, C, Pseudocode. Elige un lenguaje, copia el código o ábrelo ya cargado en el Playground de Coddy.

Código de Linear Search en Python

Python
1def linear_search(a, target):2    # Scan left to right until the target appears3    for i in range(len(a)):4        if a[i] == target:5            return i6    return -17
8
9nums = [7, 3, 9, 1, 5, 8, 2]10print("Index of 5:", linear_search(nums, 5))11print("Index of 4:", linear_search(nums, 4))
Ejecuta este código en el Playground de Python

Preguntas frecuentes sobre la búsqueda lineal

¿Cuál es la complejidad temporal de la búsqueda lineal?
O(n) en los casos promedio y peor (el recorrido puede tener que visitar cada elemento) y O(1) en el mejor caso, cuando el primer elemento es el objetivo. Usa O(1) de espacio adicional.
¿La búsqueda lineal necesita datos ordenados?
No, esa es su principal ventaja. La búsqueda lineal funciona con datos completamente desordenados porque comprueba la igualdad de cada elemento; el orden nunca importa. La búsqueda binaria, en cambio, solo funciona con arreglos ordenados.
¿Cuándo es mejor la búsqueda lineal que la búsqueda binaria?
Cuando los datos están desordenados y se buscan una sola vez (ordenar primero costaría O(n log n)), cuando la colección es diminuta, o cuando solo tienes acceso secuencial, como un flujo o una lista enlazada. Para búsquedas repetidas en arreglos ordenados, gana la búsqueda binaria.
¿La búsqueda lineal es lo mismo que la búsqueda secuencial?
Sí, los dos nombres describen el mismo algoritmo: recorrer los elementos en secuencia hasta encontrar el objetivo o llegar al final de la colección.
¿Cuántas comparaciones hace la búsqueda lineal en promedio?
Si el objetivo está presente y tiene la misma probabilidad de estar en cualquier lugar, unas n/2 comparaciones en promedio; si el objetivo no está, exactamente n. Ese crecimiento lineal es la razón por la que se llama búsqueda lineal.
Coddy programming languages illustration

Domina los algoritmos con Coddy

COMENZAR