Una definición formal enfatiza varias características clave:
* Finito: El algoritmo debe terminar después de un número finito de pasos. No puede correr para siempre.
* Definición: Cada paso debe definirse con precisión; Las acciones que se llevarán a cabo deben especificarse rigurosamente y sin ambigüedades para cada caso. No debe haber espacio para la interpretación.
* Entrada: Un algoritmo tiene cero o más entradas (cantidades que se le dan inicialmente antes de que comience el algoritmo).
* Salida: Un algoritmo tiene una o más salidas (cantidades que tienen una relación especificada con las entradas).
* Efectividad: Cada paso debe ser factible, lo que significa que debe ser algo que se pueda hacer exactamente y en un tiempo finito. Las operaciones involucradas deben ser lo suficientemente básicas como para que puedan llevarse a cabo en principio exactamente y en un tiempo finito.
Esencialmente, un algoritmo es una receta o un conjunto de instrucciones para resolver un problema específico. No es solo un programa (aunque se puede implementar como un programa en un lenguaje de programación), sino más bien el procedimiento lógico subyacente que incorpora el programa. El mismo algoritmo se puede implementar en muchos lenguajes de programación diferentes.
Por ejemplo, una receta para hornear un pastel es análogo a un algoritmo. Especifica los ingredientes (entrada), los pasos (instrucciones) y el producto final (salida). Un algoritmo de clasificación, como la clasificación de burbujas o la clasificación de fusión, es un conjunto preciso de pasos para organizar una lista de elementos en un orden específico.