Frank Coelho de Alcantara -2020
Se baseia na definição de três pontos relevantes entre todas as possibilidades de uso de um algoritmo: o pior caso possível, o melhor caso possível e o caso médio.
A análise assintótica de um algoritmo representado por uma função $f(n)$ refere-se a taxa de crescimento de $f(n)$ à medida que $n$ cresce.
Imagine, que temos dois algoritmos, um que pode ser representado por uma função linear, $f_1 (n)=d×n+k$, ou seja, para cada $n$, o tempo necessário para seu processamento será dado pela cardinalidade do conjunto multiplicada por uma constante $d$ qualquer e este resultado somado a outra constante $k$, usando as mesmas constantes poderíamos ter um algoritmo dado pela função exponencial $f_1 (n)=d×n^2+k$.
Quanto custa um automóvel mais um skate?
A principal vantagem da notação Big-O é que podemos desconsiderar todos os termos da equação polinomial que represente o algoritmo, por exemplo nas funções $f_1 (n)=d×n+k$, e $f_1 (n)=d×n^2+k$, podemos desprezar o $k$ antes mesmo de começar.
Big-O | Tempo |
$O(1)$ | Constante |
$O(n)$ | linear |
$O(log n)$ | Logarítmico |
$O(n log n)$ | Linearítimo |
$O(n^2)$ | Quadrática |
$O(n^3)$ | Cúbica |
$2~{O(1)}$ | Exponencial |
$O(n!)$ | Fatorial |
$$(n − 1) + (n − 2) + (n − 3) … + 3 + 2 + 1$$
$$\frac{n(n-1)}{2} ∴ \frac{n^2}{2}-\frac{n}{2}$$
$$𝑂(n^2)$$
Exercício Merge Sort disponível online
Você pode baixar a versão em pdf desta aula clicando aqui