Índice:
Definição - O que significa Complexidade do Tempo?
Complexidade temporal é um conceito em ciência da computação que lida com a quantificação da quantidade de tempo gasto por um conjunto de código ou algoritmo para processar ou executar em função da quantidade de entrada.
Em outras palavras, a complexidade do tempo é essencialmente eficiência ou quanto tempo uma função do programa leva para processar uma determinada entrada.
Techopedia explica a complexidade do tempo
A complexidade do tempo é simplesmente uma medida do tempo que uma função ou expressão leva para concluir sua tarefa, bem como o nome do processo para medir esse tempo. Pode ser aplicado a quase qualquer algoritmo ou função, mas é mais útil para funções recursivas. Há pouco sentido em medir a complexidade do tempo para aplicativos, como buscar o nome de usuário e a senha de um banco de dados para comparação ou simplesmente salvar dados, sejam 20 ou 5 ms; isso seria mais na linha do tempo de acesso. Não tem nada a ver com o tempo de execução, mas a diferença é insignificante. No entanto, se houver uma função recursiva que pode ser chamada várias vezes, determinar e entender a fonte de sua complexidade de tempo pode ajudar a reduzir o tempo total de processamento de, digamos, 600 ms para 100 ms.
A complexidade do tempo é expressa tipicamente na "grande notação O", mas existem outras notações. Essa é uma representação matemática do limite superior do fator de escala para um algoritmo e é escrita como O (Nn), com "N" sendo o número de entradas e "n" sendo o número de expressões em loop. Por exemplo, temos o algoritmo:
numbers = {5, 6, 10, 11, 2}; foreach (number as number1)
{
foreach(number as number2)
{
statements; } }
numbers = {5, 6, 10, 11, 2};
foreach (number as number1)
{
foreach(number as number2)
{
statements; } }
numbers = {5, 6, 10, 11, 2};
foreach (number as number1)
{
foreach(number as number2) {
statements; } }
numbers = {5, 6, 10, 11, 2};
foreach (number as number1)
{
foreach(number as number2)
{
statements; } }
numbers = {5, 6, 10, 11, 2};
foreach (number as number1)
{
foreach(number as number2)
{
statements; } }
Existem cinco entradas na matriz "numbers" e o loop "foreach" é repetido duas vezes. Portanto, o crescimento exponencial no tempo de processamento ocorre à medida que o número de entradas e o número de loops aumentam.