Inventar algoritmos é relativamente fácil. Na prática, no entanto, não se pretende apenas algoritmos, mas sim bons algoritmos. Assim, o objectivo é inventar algoritmos e provar que eles são mesmo bons. A qualidade de um algoritmo pode ser avaliada utilizando vários critérios. Um dos critérios mais importantes é o tempo despendido na execução do algoritmo. Existem vários aspectos a considerar em cada critério de tempo. Um está relacionado com o tempo de execução requerido pelos diferentes algoritmos, para encontrar a solução final de um problema ou cálculo particular. No entanto, cada uma das medidas empíricas está fortemente dependente, tanto do programa como da máquina utilizada para implementar o algoritmo. Assim, a alteração num programa pode não representar uma alteração significativa no algoritmo básico, mas pode, no entanto, afectar a velocidade de execução. Além disso, se dois programas são comparados, primeiro numa máquina e depois noutra, as comparações podem conduzir a diferentes conclusões. Assim, embora a comparação de programas completos a serem executados em computadores seja uma importante fonte de informação, os resultados são inevitavelmente afectados pelo estilo de programação e pelas características da máquina. Uma boa alternativa às medidas empíricas, é a análise matemática da dificuldade intrínseca de resolver computacionalmente um problema. Esta análise fornece um importante meio de avaliação do custo de execução do algoritmo, quando bem usada. A eficiência do tempo de execução de um algoritmo é uma função do tamanho do problema a ser resolvido computacionalmente. No entanto, supondo que o programa termina, a resolução de um problema específico requer apenas tempo e espaço de armazenamento suficientes. Os algoritmos com mais interesse geral, são os que podem ser aplicados a classes de problemas de um certo tipo. Para estes algoritmos, o tempo e o espaço de memória requeridos por um programa varia com o problema particular a ser resolvido.