Na ciência da computação, um algoritmo é uma sequência finita de instruções bem definidas e implementáveis por computador, normalmente para resolver uma classe de problemas ou realizar um cálculo. É um procedimento passo a passo que pega algumas entradas (dados), o processa e produz uma saída (resultado).
Uma definição formal enfatiza várias características importantes:
*
Finitude: O algoritmo deve terminar após um número finito de etapas. Não pode correr para sempre.
*
Definitividade: Cada passo deve ser definido com precisão; As ações a serem realizadas devem ser especificadas rigorosamente e inequivocamente para cada caso. Não deve haver espaço para interpretação.
*
Entrada: Um algoritmo possui zero ou mais entradas (quantidades que são dadas inicialmente antes do início do algoritmo).
*
saída: Um algoritmo possui uma ou mais saídas (quantidades que têm uma relação especificada com as entradas).
*
Eficácia: Cada etapa deve ser viável, o que significa que deve ser algo que possa ser feito exatamente e em um período de tempo finito. As operações envolvidas devem ser suficientemente básicas para que possam ser realizadas exatamente em princípio e em um período de tempo finito.
Essencialmente, um algoritmo é uma receita ou um conjunto de instruções para resolver um problema específico. Não é apenas um programa (embora possa ser implementado como um programa em uma linguagem de programação), mas o procedimento lógico subjacente que o programa incorpora. O mesmo algoritmo pode ser implementado em muitas linguagens de programação diferentes.
Por exemplo, uma receita para assar um bolo é análoga a um algoritmo. Ele especifica os ingredientes (entrada), as etapas (instruções) e o produto final (saída). Um algoritmo de classificação, como classificação de bolhas ou classificação de mesclagem, é um conjunto preciso de etapas para organizar uma lista de itens em um pedido específico.