Algoritmos de Búsqueda y Ordenación: Búsqueda Lineal en Python
Clase 6 de 16 • Curso de Complejidad Algorítmica con Python
Resumen
¿Qué aprenderemos en el módulo de algoritmos de búsqueda y ordenación?
A lo largo de este módulo, nos enfocaremos en dos aspectos fundamentales: aplicar conceptos de complejidad algorítmica y comprender el uso de diferentes algoritmos para resolver problemas. La habilidad de transformar un problema desconocido en uno para el cual ya conocemos la solución es esencial en el campo de la ciencia de datos y el desarrollo de software. Comenzaremos con un algoritmo sencillo pero importante: la búsqueda lineal.
¿Cómo se implementa la búsqueda lineal?
La búsqueda lineal es un algoritmo básico que nos permite buscar un elemento dentro de una lista, ya sea ordenada o desordenada. Aquí te presento cómo implementar este algoritmo en Python.
def busqueda_lineal(lista, objetivo):
match = False
for elemento in lista:
if elemento == objetivo:
match = True
break
return match
- Definición de Función: Creamos una función
busqueda_lineal
que recibe una lista y un objetivo. - Inicialización: Comenzamos definiendo
match
comoFalse
. - Iteración: Usamos un bucle
for
para recorrer cadaelemento
enlista
. - Condición: Si
elemento
es igual aobjetivo
, cambiamosmatch
aTrue
. - Retorno: Devolvemos el valor de
match
.
¿Cómo interactuar con el usuario?
Podemos crear un programa en Python que genere listas aleatorias y pregunte al usuario por el elemento objetivo. Aquí se incluye el uso de módulos y funciones básicas de Python.
import random
if __name__ == '__main__':
# Solicitar tamaño de la lista al usuario
tamaño_lista = int(input("¿De qué tamaño será la lista? "))
# Solicitar el objetivo que desea encontrar
objetivo = int(input("¿Qué número quieres encontrar? "))
# Generar lista de números aleatorios
lista = [random.randint(0, 100) for _ in range(tamaño_lista)]
print("Lista:", lista)
# Buscar objetivo en la lista
encontrado = busqueda_lineal(lista, objetivo)
# Imprimir resultado
print(f"El elemento {objetivo} {'está' if encontrado else 'no está'} en la lista")
- Solicitar Datos: Primero, preguntamos al usuario el tamaño de la lista que desea generar y el número que quiere encontrar.
- Generación Aleatoria: Utilizamos
random.randint
para poblar la lista con números aleatorios entre 0 y 100. - Ejecución de Búsqueda: Llamamos a
busqueda_lineal
para verificar si elobjetivo
está en lalista
. - Impresión del Resultado: Informamos al usuario si el número fue encontrado.
¿Cuál es la complejidad algorítmica de la búsqueda lineal?
La complejidad de tiempo de la búsqueda lineal es comúnmente conocida como (O(n)), donde (n) es el tamaño de la lista. A continuación, te explico por qué:
- Bucle Único: El algoritmo hace uso de un solo bucle que recorre completamente la lista.
- Peor Escenario: El peor caso ocurre cuando el elemento deseado es el último en la lista o no está presente, lo que implica recorrer todo el conjunto.
- Mejor Escenario: El mejor de los casos sería encontrar el elemento en la primera posición, pero aún así, la complejidad sigue siendo proporcional a (n).
Si lograste derivar esta complejidad por ti mismo, ¡felicidades! Es un paso significativo en la comprensión de la complejidad algorítmica. Si no lo comprendiste completamente, no te preocupes, ya que estos pueden ser temas desafiantes. Te animo a seguir explorando y aprendiendo para dominar este concepto esencial en el desarrollo de software y la ciencia de datos.