coldwa.st
Todas las guíasProgramaciónWebDatosHerramientasBases de datosHaskellConceptosCabal y buildsToolchainCompiladorRendimientoEditor y HLS

Programación · conceptos · fundamentos

¿Qué es un algoritmo?

Por ColdwastActualizado el 14 de junio de 20267 min de lectura#algorithm#concepts#cs
Flujos de código verde en una pantalla oscura
Flujos de código en una pantalla — un algoritmo es la lógica paso a paso que ejecuta un código como este.

Es una de las palabras más usadas en la tecnología — «el algoritmo decide», «un algoritmo más rápido», «el feed algorítmico» — y una de las menos explicadas con precisión. Un algoritmo es una idea simple y fundamental que subyace a toda la informática. Esta guía explica qué es un algoritmo, sus propiedades clave, ejemplos de la vida cotidiana y del código, por qué importa la eficiencia, y en qué se diferencia de un programa.

La definición corta

Un algoritmo es un procedimiento finito, paso a paso, para resolver un problema o producir una salida a partir de una entrada. Dale la misma entrada y sigue los pasos exactamente, y produce el mismo resultado cada vez. Es una receta precisa — independiente de cualquier lenguaje de programación concreto.

Una analogía cotidiana

Una receta de cocina es un algoritmo: una lista definida de pasos («pica las cebollas, calienta el aceite, añade y remueve durante 5 minutos») que convierte entradas (ingredientes) en una salida (un plato). También lo son las instrucciones de la división larga que aprendiste en la escuela, o los pasos para montar un mueble desmontable. La idea es muy anterior a los ordenadores — la palabra proviene del matemático del siglo IX al-Juarismi.

Las propiedades clave

  • Pasos bien definidos — cada instrucción es clara e inequívoca.
  • Finito — debe terminar tras un número limitado de pasos, no ejecutarse para siempre.
  • Entrada y salida definidas — toma cero o más entradas y produce un resultado.
  • Efectivo — cada paso es lo bastante básico para poder llevarse a cabo realmente.

Un algoritmo es además independiente del lenguaje: el mismo algoritmo de ordenación puede escribirse en Python, Haskell, Rust o a mano en papel. El algoritmo es la idea; el código es una expresión de ella.

Código fuente colorido en un monitor
Código fuente colorido en un monitor — el código es una expresión concreta de un algoritmo, la idea subyacente paso a paso.

Un ejemplo concreto

Para encontrar el número mayor de una lista, el algoritmo es:

1. Assume the first number is the largest so far.
2. Look at each remaining number in turn.
3. If it is bigger than the largest so far, make it the new largest.
4. After the last number, the largest so far is the answer.

Eso es un algoritmo completo — escrito en lenguaje llano, sin necesidad de código. Traducirlo a un lenguaje es un paso aparte y mecánico.

Por qué importa la eficiencia: Big-O

Distintos algoritmos pueden resolver el mismo problema con cantidades de trabajo muy diferentes. La notación Big-O describe cómo crece el coste de un algoritmo a medida que la entrada se hace mayor. Recorrer una lista una vez para encontrar el valor mayor es O(n) — el trabajo crece en proporción al número de elementos. Un enfoque ingenuo que comparara cada par sería O(n²) — mucho más lento para entradas grandes. Elegir un mejor algoritmo a menudo importa más que un ordenador más rápido: una ordenación O(n log n) superará a una O(n²) en una lista grande siempre.

Algoritmo vs programa

Están relacionados pero no son lo mismo. Un algoritmo es el método abstracto — los pasos. Un programa es una implementación concreta de uno o más algoritmos en un lenguaje específico, con todos los detalles del mundo real (manejo de entradas, errores, memoria) ya cubiertos. Primero diseñas el algoritmo, luego lo implementas. El mismo algoritmo puede dar vida a muchos programas.

Preguntas frecuentes

¿Es un algoritmo lo mismo que el código? No. El algoritmo es el conjunto de pasos independiente del lenguaje; el código es una implementación de él. El mismo algoritmo puede escribirse en muchos lenguajes.

¿Qué hace «bueno» a un algoritmo? La corrección primero (produce la salida correcta para cada entrada válida), luego la eficiencia (usa una cantidad aceptable de tiempo y memoria, descrita por el Big-O), luego la claridad.

¿Qué es la notación Big-O? Una forma de describir cómo crece el tiempo de ejecución o la memoria de un algoritmo a medida que crece el tamaño de la entrada — p. ej. O(n) lineal, O(n log n), O(n²) cuadrático. Compara algoritmos con independencia de la máquina exacta.

¿Necesito matemáticas para entender los algoritmos? La lógica básica basta para empezar. Los cotidianos — búsqueda, ordenación, conteo — son intuitivos; las matemáticas se vuelven útiles cuando analizas y comparas su eficiencia.

Los algoritmos son el «qué hacer»; un lenguaje como Haskell o los datos que transporta una API son el «cómo» y el «con qué». Explora más explicaciones claras en nuestro índice de guías.

Guía independiente y mantenida por la comunidad. coldwa.st es un sitio de recursos de programación; este artículo es texto explicativo nuevo y original sobre los algoritmos. Los ejemplos son ilustrativos; verifica las afirmaciones de complejidad con un texto de referencia cuando importe.