Ir para o conteúdo
Allin

Notação Big O para iniciantes: O(1), O(n), O(n ao quadrado) e O(log n) explicadas

Publicado a 11/03/2026 · 4 min de leitura · Ferramentas para programadores

Daniel Okonkwo

Daniel OkonkwoProgramador front-end e redator de Tecnologia na Allin

Desempenho web · Formatos de ficheiro

Verificado a partir de 2 fontes

Ver perfil
Em resumo

A notação Big O descreve como cresce o tempo de execução ou a memória de um algoritmo à medida que o tamanho de entrada n cresce, ignorando fatores constantes e termos pequenos. O(1) significa que o trabalho permanece igual não importa quão grande seja a entrada; O(log n) cresce muito devagar, duplicar a entrada acrescenta apenas um passo; O(n) cresce ao ritmo da entrada; e O(n ao quadrado) cresce com o quadrado, por isso duplicar a entrada quadruplica o trabalho. Importa porque com n grande estas diferenças decidem se um programa termina em milissegundos ou em horas.

O Big O descreve como o trabalho de um algoritmo cresce à medida que a entrada cresce. Eis o que significam O(1), O(n), O(n ao quadrado) e O(log n) e porque a diferença importa.

Crescimento, não tempo de cronómetro

O Big O não trata de quantos segundos algo demora no seu portátil. Trata de como o trabalho escala quando a entrada cresce. Dois algoritmos podem ser ambos O(n), e ainda assim um corre o dobro da rapidez em hardware real por um fator constante menor. O Big O descarta de propósito essa constante, porque com n suficientemente grande a forma da curva de crescimento domina qualquer multiplicador fixo.

A notação também mantém apenas o termo que cresce mais depressa. Um algoritmo que faz 3n ao quadrado mais 5n mais 200 operações é simplesmente O(n ao quadrado), porque assim que n é grande o termo ao quadrado empequenece o resto. É por isso que o Big O é uma lupa grosseira mas poderosa: dá-lhe a classe de comportamento, exatamente o que precisa ao decidir se uma solução sobreviverá a cem vezes mais dados.

As quatro classes comuns

O(1) é tempo constante: ler um elemento de array por índice ou verificar uma chave de mapa hash custa o mesmo esforço tenha a coleção dez elementos ou dez milhões. O(log n) é logarítmico: a pesquisa binária reduz para metade os dados restantes em cada passo, por isso procurar numa lista ordenada de mil milhões de elementos leva apenas cerca de trinta comparações. Reduzir para metade é a imagem espelhada da duplicação que se vê ao converter números entre bases.

O(n) é linear: somar cada elemento ou percorrer uma lista uma vez toca cada elemento exatamente uma vez, por isso o trabalho sobe em linha reta com n. O(n ao quadrado) é quadrático e costuma vir de ciclos aninhados, como comparar cada par de elementos. Com n de 1000 são um milhão de operações; com n de 1 000 000 são um bilião, e é aí que o código quadrático ingénuo se torna inutilizável sem barulho.

Porque a classe que escolhe importa

A complexidade é o que separa um protótipo que funciona no seu ficheiro de teste de um software que sobrevive aos dados de produção. Ordenar com um algoritmo O(n ao quadrado) parece instantâneo em cem linhas e congela num milhão. Trocar por uma ordenação O(n log n) mantém a mesma tarefa abaixo de um segundo. O algoritmo que escolhe, e não a velocidade da máquina, fixa o teto de quantos dados consegue tratar.

Dito isto, o Big O é assintótico: descreve o comportamento quando n tende para o infinito. Para entradas pequenas, uma rotina mais simples O(n ao quadrado) pode vencer uma sofisticada O(n log n) com muita sobrecarga. A regra prática é conhecer a classe de cada operação central e depois otimizar as partes que verão mesmo um n grande, em vez de perseguir constantes em código que só trata entradas minúsculas.

Conversor de basesConverte um número entre as 35 bases, sem arredondamento, com complemento para dois.Experimentar a ferramenta

Perguntas frequentes

Um Big O menor é sempre mais rápido?
Não para entradas pequenas. O Big O ignora os fatores constantes, por isso um método O(n log n) com muita preparação pode perder para um simples ciclo O(n ao quadrado) quando n é minúsculo. A classe menor ganha assim que a entrada é grande o suficiente.
Qual é a diferença entre O(log n) e O(n log n)?
O(log n) faz uma única passagem logarítmica, como uma única pesquisa binária. O(n log n) faz uma quantidade logarítmica de trabalho para cada um dos n elementos, que é o custo de algoritmos de ordenação eficientes como o merge sort.
O Big O cobre também a memória?
Sim. A mesma notação descreve a complexidade de espaço, quanta memória extra um algoritmo precisa à medida que n cresce. Uma ordenação no local pode usar O(1) de espaço extra, enquanto uma que copia os dados usa O(n).
Porque ignoramos as constantes e os termos menores?
Porque com n grande o termo que cresce mais depressa domina tudo o resto, e as constantes dependem de hardware que não controla. Descartá-los dá uma comparação portável de como os algoritmos escalam, independente de qualquer máquina.

Artigos que podem interessar-lhe

Todos os guias
ExplicaçãoO que são UTF-8 e Unicode? Pontos de código, codificação em bytes e porque o UTF-8 venceuO Unicode atribui a cada carácter um ponto de código; o UTF-8 codifica esses pontos de código em um a quatro bytes. Eis como funciona e porque bateu as alternativas.ExplicaçãoComo funcionam as máscaras de sub-rede: CIDR, bits de rede e hosts utilizáveisPerceba como uma máscara de sub-rede divide um endereço IP em partes de rede e host, o que significa /24 e como contar os hosts utilizáveis.ExplicaçãoEntropia de palavras-passe explicada: bits, comprimento e quanto tempo leva a quebrarO que a entropia de uma palavra-passe realmente mede, porque o comprimento supera a complexidade e como os bits de entropia se traduzem num tempo de quebra realista.TutorialComo ler binário e convertê-lo para decimal e hexadecimalSaiba como funcionam os valores posicionais binários e converta binário para decimal e hexadecimal à mão, com exemplos claros.TutorialQuanto tempo demora a carregar um ficheiro? A fórmula tamanho vezes 8 dividido pela velocidadeEstime o tempo de carregamento com uma fórmula: o tamanho do ficheiro em bits dividido pela sua velocidade de envio. Saiba porque o envio costuma ser mais lento que o descarregamento e como a sobrecarga afeta o resultado.ExplicaçãoO que é bitrate? Bits por segundo, CBR vs VBRBitrate é quantos bits de dados um fluxo de vídeo ou áudio usa a cada segundo. Saiba como define a qualidade e o tamanho, e a diferença entre bitrate constante e variável.

Ferramentas relacionadas

Fontes

Detetaste um erro neste artigo?