Considere el siguiente problema computacional:
Problema: Ordenar una secuencia de números enteros.
Este problema se puede resolver, entre otras opciones, con el algoritmo de ordenamiento por burbuja. En el archivo burbuja.py
, la función burbuja
implementa dicho algoritmo sobre una lista.
-
Implemente en el archivo
burbuja.py
la funciónburbuja_optimizado
como una mejora a la funciónburbuja
tomando en cuenta que si en un recorrido no hizo intercambios es porque la lista ya está ordenada. -
Implemente en el archivo
burbuja_test.py
las funcionestest_mejor_caso
,test_peor_caso
,test_caso_promedio
para probar correspondientemente los casos mejor, peor y promedio deburbuja_optimizado
. Cada prueba debe verificar la complejidad temporal esperada para el caso correspondiente.
Importante: para poder verificar la complejidad temporal utilizando la biblioteca big_O
, debe programar funciones generar_mejor(n)
, generar_peor(n)
y generar_promedio(n)
que retornan, cada una, una lista de enteros de tamaño n
cuyo contenido representa una instancia del caso.
Este proyecto requiere python3
. Asegúrese que esté instalado en su distribución de linux.
Si no lo ha hecho anteriormente, crear un ambiente virtual para las dependencias
python3 -m venv .venv
Activar el ambiente virtual
source .venv/bin/activate
Instalar las dependencias
pip3 install -r requirements.txt
Ejecutar las pruebas
pytest -s -W ignore::DeprecationWarning
- (5 pts) La producción cumple totalmente con los requerimientos solicitados.
- (3 pts) La producción cumple parcialmente con los requerimientos solicitados.
- (1 pts) La producción, en su mayor parte, no cumple con los requerimientos solicitados.
- (5 pts) El código pasa exitosamente todas las pruebas automatizadas.
- (3 pts) El código pasa la mayoría de las pruebas automatizadas.
- (1 pts) El código no pasa la mayoría de las pruebas automatizadas.
- (5 pts) El código optimizado mejora el tiempo de ejecución del código original.
- (3 pts) El código optimizado corre en un tiempo de ejecución semejante al del código original.
- (1 pts) El código optimizado empeora el tiempo de ejecución del código original.