Proyecto académico de algoritmia

Algoritmia, sin estrés:
guía clara y práctica

Aprender algoritmos puede sentirse abrumador al principio. Esta guía existe para cambiar eso: explicaciones directas, ejemplos reales en C y C++, y una estructura diseñada para que avances a tu ritmo, con confianza.

Diagrama de un grafo: nodos A, B, C, D, E, F y G conectados por aristas, representando una estructura de datos fundamental en algoritmia

Sobre esta página

Esta guía está diseñada para estudiantes que están comenzando con algoritmia o que desean consolidar conceptos clave en C y C++. El objetivo no es reemplazar libros de texto clásicos —como CLRS o Knuth— sino ofrecer una puerta de entrada amable que te prepare para leerlos con mayor fluidez.

El sitio se organiza en tres secciones: esta página de inicio con los fundamentos conceptuales, una guía detallada con código y teoría, y una sección de ejercicios progresivos para practicar lo aprendido. Cada parte puede leerse de forma independiente, pero fluyen mejor en orden.

No asumimos que sabes todo de antemano. Si un término aparece sin previo aviso, es una oportunidad para explorarlo: los conceptos se introducen gradualmente y se construyen entre sí. El ritmo lo defines tú.

Fundamentos de algoritmia

Un algoritmo es una secuencia finita y bien definida de pasos para resolver un problema. No importa si usas C, Python o pseudocódigo: la lógica del algoritmo es independiente del lenguaje. Cuando dominas cómo pensar algorítmicamente, el lenguaje se vuelve solo un detalle.

El marco de resolución de problemas que verás en esta guía tiene cinco pasos: entender el problema, explorar ejemplos, definir una estrategia, escribir el código y analizar su complejidad. Seguir este orden reduce errores y hace que el proceso se sienta menos caótico.

Diagrama de flujo de cinco pasos para resolver problemas algorítmicos: entender, ejemplos, estrategia, código y analizar

Ejemplo de pseudocódigo

El pseudocódigo es una forma de escribir la lógica de un algoritmo sin preocuparte aún por la sintaxis exacta del lenguaje. Por ejemplo, para encontrar el número máximo en una lista:

función maxDeArreglo(arr, n):
max ← arr[0]
para i desde 1 hasta n-1:
si arr[i] > max entonces:
max ← arr[i]
fin para
retornar max
fin función

Pseudocódigo: encontrar el valor máximo en un arreglo de n elementos.

Checklist mental antes de escribir código

Antes de abrir el editor, responde estas preguntas. Te ahorrarán errores costosos y te ayudarán a llegar a la solución con menos frustración.

  • ¿Entiendo exactamente qué debe hacer el programa? ¿Qué recibe y qué devuelve?
  • ¿Probé al menos dos ejemplos a mano, incluyendo un caso borde?
  • ¿Elegí la estructura de datos más adecuada para este problema?
  • ¿Cuál es el orden de complejidad esperado de mi solución?
  • ¿Hay un caso especial (arreglo vacío, un solo elemento) que debo manejar?
  • ¿Puedo describir mi estrategia en una oración antes de programarla?

Big-O: entender el costo de un algoritmo

La notación Big-O describe cómo crece el tiempo de ejecución (o el uso de memoria) de un algoritmo cuando la entrada crece. No es una medida exacta en segundos, sino una forma de comparar algoritmos de manera independiente del hardware.

Pensar en Big-O puede generar ansiedad al principio. La clave es empezar con la intuición: ¿cuántas veces recorre mi código los datos?

Gráfica de curvas de complejidad: O(1), O(log n), O(n), O(n log n) y O(n²), mostrando cómo crecen con respecto al tamaño de entrada
Notación Nombre Intuición Ejemplo típico
O(1) Constante El tiempo no depende del tamaño de entrada. Acceder a arr[i] en un arreglo.
O(log n) Logarítmica Cada paso divide el problema a la mitad. Búsqueda binaria en un arreglo ordenado.
O(n) Lineal Recorre cada elemento una sola vez. Encontrar el máximo de una lista.
O(n log n) Linealítmica Lineal, pero con división recursiva. Merge Sort, Quick Sort (caso promedio).
O(n²) Cuadrática Dos bucles anidados que recorren todo. Bubble Sort, comparar todos los pares.

💡 Tip

Para n = 1,000: O(n²) ejecuta ~1 000 000 operaciones, mientras O(n log n) ejecuta solo ~10 000. Para n = 10 000, la diferencia se vuelve enorme. Por eso la elección del algoritmo importa más que la velocidad del procesador.

Tu ruta en este sitio

🗺

Ruta recomendada

Comienza aquí (fundamentos y Big-O). Luego lee la Guía para profundizar en C, C++ y estructuras de datos. Finalmente ve a Ejercicios y practica con problemas progresivos.

Inicio → Guía → Ejercicios

Errores comunes (y cómo evitarlos)

  • Escribir código sin entender el problema primero.
  • Ignorar los casos borde (arreglo vacío, n=0, n=1).
  • Usar O(n²) cuando O(n log n) era posible.
  • Confundir índices: recuerda que los arreglos en C empiezan en 0.
  • Olvidar liberar memoria en C (free()).