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
Proyecto académico de algoritmia
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.
Qué es esto
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ú.
El punto de partida
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.
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:
Pseudocódigo: encontrar el valor máximo en un arreglo de n elementos.
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.
Complejidad sin drama
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?
| 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.
Por dónde empezar
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
free()).