Em
ciência da computação,
a análise de algoritmos tem como função determinar os recursos necessários para executar um dado
algoritmo. A maior parte dos algoritmos são pensados para trabalhar com entradas (
inputs) de tamanho arbitrário. Em geral, a eficiência ou complexidade de um algoritmo é função do tamanho do
problema, do número de passos necessário (
complexidade temporal) e da complexidade espacial ou de
memória do sistema usado para executar o algoritmo. Esta disciplina faz parte da mais vasta
teoria da complexidade computacional, que permite fazer estimativas quanto aos recursos necessários para que um algoritmo resolva um determinado problema computacional.
Assim, o objetivo final não é apenas fazer códigos que funcionem, mas que sejam também eficientes. Para isso, deve-se estudar alguns tipos de problemas que podem ser resolvidos computacionalmente. Em seguida, deve ser visto como a abordagem adotada para resolver pode influenciar, levando a um algoritmo mais ou menos eficiente.