BIG-O
- BIG-O
info
BIG-O explica como o algoritmo escala baseado em uma entrada. Não é sobre performance
Mede a complexidade TEMPORAL(tempo) e ESPACIAL(memória)
danger
As notações abaixo vale para tempo e memória
warning
Sempre considerar o lado pessimista do Algoritmo
Notações
O(1)
- O(1) – Tempo Constante: O desempenho não muda, independentemente do tamanho da entrada. Exemplo: acessar um elemento em um array pelo índice.
O(n)
- O(n) – Tempo Linear: O tempo aumenta proporcionalmente ao tamanho da entrada. Exemplo: percorrer e somar todos os elementos de uma lista.
O(n²)
- O(n²) – Tempo Quadrático: O tempo aumenta com o quadrado do tamanho da entrada. Exemplo: verificar cada par, cada permutação, de elementos em uma lista (como em Bubble Sort).
É um loop dentro de um loop
O(n log n)
- O(n log n) – Tempo Log-linear: Comum em algoritmos eficientes de ordenação, como Merge Sort, ou outros algoritmos de divide and conquer.
O(log n)
-
O(log n) – Tempo Logarítmico: O tempo aumenta logaritmicamente à medida que a entrada cresce. Exemplo: binary search.
📈 Explicação
Tamanho do input nTempo em O(n)Tempo em O(log n)10 10 ~3.3 20 20 ~4.3 40 40 ~5.3 Veja que quando o input dobra de 10 para 20, o tempo em
O(log n)só aumenta de ~3.3 para ~4.3.✅ Uma forma correta de descrever
O(log n)seria:"Se o input dobra, o tempo de execução aumenta um pouco, seguindo um crescimento logarítmico."