Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/carlosgomezc7/plataforma_aprendizaje/llms.txt

Use this file to discover all available pages before exploring further.

quicksort_cursos ordena una lista de diccionarios de curso usando el algoritmo Quick Sort recursivo. El orden resultante es descendente (el valor más alto primero), pensado para surfacer los cursos más relevantes al inicio de las sugerencias personalizadas. Llama a esta función justo antes de renderizar el listado de cursos en la interfaz, pasando la lista obtenida de MotorBaseDatos.obtener_cursos().

Firma

def quicksort_cursos(arr: list[dict], clave: str = "relevancia") -> list[dict]

Parámetros

arr
list[dict]
required
Lista de diccionarios de curso a ordenar. Cada diccionario debe contener la clave indicada en clave con un valor numérico comparable.
clave
string
default:"relevancia"
Clave del diccionario por la que se ordena. El orden resultante es descendente (mayor a menor). Por defecto es "relevancia".

Valor de retorno

Devuelve una nueva lista ordenada de forma descendente por el campo clave. La lista original arr no es mutada. Si arr tiene cero o un elemento, se devuelve tal cual sin ninguna operación adicional.

Complejidad

CasoComplejidad temporal
PromedioO(n log n)
Peor casoO(n²)
El peor caso (lista ya ordenada) se mitiga seleccionando el pivote central (arr[len(arr) // 2]) en lugar del primer o último elemento, lo que distribuye mejor las particiones en datos parcialmente ordenados.

Ejemplo

cursos = [
    {"id": 101, "nombre": "Matemáticas Básicas", "relevancia": 85, "dificultad": 3},
    {"id": 102, "nombre": "Programación en Python", "relevancia": 95, "dificultad": 5},
    {"id": 105, "nombre": "Estructuras de Datos", "relevancia": 99, "dificultad": 8},
]
ordenados = quicksort_cursos(cursos, "relevancia")
# ordenados[0]["nombre"] == "Estructuras de Datos"  (relevancia 99)
# ordenados[1]["nombre"] == "Programación en Python"  (relevancia 95)

Código fuente

def quicksort_cursos(arr, clave="relevancia"):
    if len(arr) <= 1:
        return arr
    pivote = arr[len(arr) // 2]
    izq = [x for x in arr if x[clave] > pivote[clave]]
    medio = [x for x in arr if x[clave] == pivote[clave]]
    der = [x for x in arr if x[clave] < pivote[clave]]
    return quicksort_cursos(izq, clave) + medio + quicksort_cursos(der, clave)
La función puede ordenar por cualquier clave numérica presente en los diccionarios de curso, no solo "relevancia". Por ejemplo, pasa clave="dificultad" para obtener los cursos ordenados del más difícil al más sencillo, lo que puede ser útil para construir rutas de aprendizaje progresivas o filtros avanzados en la interfaz.

Build docs developers (and LLMs) love