As frases tempo mínimo e tempo máximo são um pouco enganosas aqui. Quando falamos sobre notações grandes O, não é o tempo real que nos interessa, mas como o tempo aumenta quando nosso tamanho de entrada fica maior. E geralmente é o tempo médio ou pior caso que estamos falando, não o melhor caso , que geralmente não é significativo para resolver nossos problemas.
Usando a pesquisa de array na resposta aceita para a outra questão como exemplo. O tempo que leva para encontrar um número específico na lista de tamanho n é n / 2 * alguma_constante em média. Se você tratá-lo como uma função f(n) = n/2*some_constant
, ele não aumentará mais rápido do que g(n) = n
, no sentido dado por Charlie. Além disso, não aumenta mais lentamente do que g(n)
qualquer um. Portanto, g(n)
é na verdade um limite superior e um limite inferior de f(n)
na notação Big-O, então a complexidade da pesquisa linear é exatamente n , o que significa que é Theta (n).
A este respeito, a explicação na resposta aceita para a outra pergunta não é totalmente correta, que afirma que O (n) é o limite superior porque o algoritmo pode ser executado em tempo constante para algumas entradas (este é o melhor caso que mencionei acima, que não é realmente o que queremos saber sobre o tempo de execução).