18 de Março
O(n²)
O que O(n²) significa, por que loops aninhados costumam cair nisso e quando isso realmente importa.
Andrews Ribeiro
Founder & Engineer
O que significa
O(n²) significa que a quantidade de trabalho cresce aproximadamente com o quadrado do tamanho da entrada.
Se a entrada dobra, o trabalho pode ficar perto de quatro vezes maior.
Por isso exemplo pequeno parece tranquilo e exemplo grande piora rápido.
Formato comum
O caso mais clássico e um loop dentro do outro comparando cada item com muitos outros.
for (let i = 0; i < items.length; i += 1) {
for (let j = 0; j < items.length; j += 1) {
compare(items[i], items[j])
}
}
Não e o único jeito de chegar em O(n²), mas e o padrão mais fácil de reconhecer.
Quando importa
O(n²) não e automaticamente errado.
Vira problema quando:
npode crescer bastante- a operação interna e cara
- isso roda vezes suficientes para afetar custo ou experiência
Se n e pequeno e fixo, talvez a solução continue aceitavel.
Pergunta melhor
Não pergunte só “isso e O(n²)?”
Pergunte:
- quanto
npode crescer de verdade? - com que frequência isso roda?
- existe
Hash Map,Set, ordenação ou preprocessamento que evite varredura repetida?
Essa conversa costuma ajudar mais do que teatro de complexidade.
Compartilhar esta página
Copie o link manualmente no campo abaixo.