Estimador de Complexidade
Selecione padrões de código comuns para estimar a complexidade assintótica.
n = 100
Pseudocódigo
para i = 1 até n:
operação O(1)
O que significa um valor grande na notação O?
Quanto maior o valor dentro do O(...), mais o número de operações dispara conforme n cresce.
O(1)eO(log n): extremamente rápidos — mesmo com n enorme, o trabalho quase não aumenta.O(n): aceitável — dobra de trabalho para cada dobra de n.O(n log n): bom — usado nos melhores algoritmos de ordenação.O(n²)eO(n³): pesados — com n = 1000, são milhões ou bilhões de operações.O(2ⁿ)eO(n!): impraticáveis — com n > 30 ou n > 10, o tempo torna-se inviável.
Use o Comparador acima para visualizar graficamente como cada função cresce.
Comparador de Crescimento
Compare múltiplas funções de complexidade para diferentes valores de n.
Funções
n = 1000
Gráfico de Crescimento
Tabela Comparativa
| Função | n = 1 | n = 10 | n = 100 | n = 1000 |
|---|
Referência Big-O
Classes de complexidade e exemplos clássicos.
Tabela de Complexidades
| Notação | Nome | Exemplo |
|---|---|---|
O(1) | Constante | Acesso por índice em array |
O(log n) | Logarítmica | Busca binária |
O(n) | Linear | Busca linear, loop simples |
O(n log n) | Linearítmica | Merge Sort, Quick Sort (médio) |
O(n²) | Quadrática | Bubble Sort, loops aninhados |
O(2ⁿ) | Exponencial | Problema do caixeiro viajante (força bruta) |
O(n!) | Fatorial | Permutações completas |
Por que usamos log n em vez de log₂ n?
Em Análise de Algoritmos, log significa logaritmo binário (base 2), não logaritmo decimal. A razão:
- A maioria dos algoritmos analisados divide o problema ao meio (busca binária, merge sort), e cada divisão corresponde a multiplicar por
log₂. - Em Big-O, a base do logaritmo é irrelevante —
logₐ nelog_b ndiferem apenas por uma constante multiplicativa, e constantes são ignoradas na notaçãoO. - Por convenção da Ciência da Computação, escrevemos apenas
log nsubentendendo base 2, simplificando a notação sem perda de precisão.