Módulo 12 - Quanto custa: eficiência e a noção de Big-O

Contar passos, não segundos

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026

O que você vai aprender

  • Entender por que medir por cronômetro engana.
  • Medir o custo de um algoritmo contando passos (operações).
  • Perceber que a contagem de passos independe da máquina.
  • Contar os passos de um algoritmo simples.

Por que o cronômetro engana

Como saber se um algoritmo é eficiente? A tentação é cronometrar: rode o programa e veja quanto demora. Mas o cronômetro engana, e por um motivo simples. O mesmo código roda mais rápido num computador potente e mais devagar num celular antigo; roda diferente se a máquina está ocupada com outras tarefas; roda diferente conforme a linguagem. Se você compara dois algoritmos pelo tempo, pode estar medindo a máquina, não o algoritmo. É como comparar dois corredores cronometrando um no plano e outro na subida: o relógio não conta a história justa. Para medir o algoritmo em si, você precisa de algo que não dependa de onde ele roda.

Esse algo é a contagem de passos. Em vez de perguntar quantos segundos, você pergunta quantas operações básicas o algoritmo executa: quantas comparações, quantas somas, quantas trocas. Esse número não muda de um computador para outro; ele é uma propriedade do algoritmo. Uma busca linear numa lista de mil itens faz até mil comparações, seja num supercomputador, seja num celular. O supercomputador faz essas mil comparações mais rápido, claro, mas são mil comparações nos dois. Contando passos, você compara algoritmos de forma justa, isolando a esperteza do método da força bruta da máquina. É assim que a computação fala de eficiência: em passos, não em segundos.

Dois computadores de potências diferentes rodando o mesmo algoritmo. Um cronômetro sob cada um marca tempos diferentes, com um X vermelho indicando medida enganosa. Ao lado, uma etiqueta de contagem de passos mostra o mesmo número de operações (mil comparações) para os dois, com um selo de medida justa.
O tempo varia com a máquina e engana; a contagem de passos é a mesma em qualquer computador, e é a medida justa.

Contando passos na prática

Contar passos é mais simples do que parece: você olha o algoritmo e conta quantas vezes as operações principais rodam. Um laço que percorre uma lista de n itens fazendo uma comparação em cada volta faz n comparações. Dois laços aninhados, cada um de n voltas, fazem n vezes n operações, ou seja, n ao quadrado, exatamente o que você viu no módulo de laços aninhados. Uma busca binária faz cerca de vinte passos num milhão de itens, porque corta pela metade. Repare que, ao contar, a gente não se importa tanto com os detalhes miúdos (se são exatamente n ou n mais três comparações); o que importa é a forma geral do crescimento: cresce como n, como n ao quadrado, como o logaritmo? Essa forma é o coração da eficiência, e é o assunto da próxima aula.

🎮 Jogo da aula

Quantos passos?

Conte quantas vezes a linha do soma executa neste trecho, para uma lista de tamanho 5.

lista tem 5 itens
soma <- 0
para i de 0 até 4 faça
  para j de 0 até 4 faça
    soma <- soma + 1
  fim
fim

O que realmente importa na contagem

Ao contar passos, um detalhe muda a mentalidade: o que importa é o comportamento com dados grandes, não com dados pequenos. Para uma lista de cinco itens, qualquer algoritmo é instantâneo, então a eficiência não faz diferença ali. A eficiência começa a importar quando os dados crescem, e é aí que as diferenças entre algoritmos explodem. Por isso a análise de eficiência foca em como o número de passos cresce conforme o tamanho aumenta, e ignora os detalhes que não mudam essa tendência. Um algoritmo que faz n mais dez passos e outro que faz n mais mil passos têm, no fundo, o mesmo comportamento quando n é gigante: os dois crescem como n. Essa forma de olhar, focada na tendência de crescimento e não nos números exatos, é o que torna a análise de eficiência poderosa e simples ao mesmo tempo.

Teste rápido

Por que se mede a eficiência de um algoritmo contando passos, e não cronometrando o tempo?

Perguntas frequentes

Por que não medir eficiência com um cronômetro?
Porque o tempo depende da máquina: o mesmo código roda mais rápido num computador potente e mais devagar num fraco ou ocupado. Comparar algoritmos por tempo pode acabar medindo o hardware, não o algoritmo. A contagem de passos isola a esperteza do método da força da máquina.
O que é contar passos?
É medir o custo contando quantas operações básicas (comparações, somas, trocas) o algoritmo executa. Esse número é uma propriedade do algoritmo, igual em qualquer máquina. Uma busca linear em mil itens faz até mil comparações em qualquer computador, ainda que uns as executem mais rápido.
Preciso contar cada operação exatamente?
Não. O que importa é a forma geral do crescimento, não o número exato. Se um algoritmo faz n ou n mais três comparações, a tendência é a mesma: cresce como n. A análise de eficiência foca em como o custo cresce com o tamanho, ignorando os detalhes que não mudam essa tendência.
Por que a eficiência só importa com dados grandes?
Porque com poucos dados qualquer algoritmo é instantâneo, então a diferença é irrelevante. As diferenças entre algoritmos explodem quando os dados crescem: com um milhão de itens, um método pode levar um instante e outro, horas. Por isso a análise foca no comportamento em escala.
Dois laços aninhados sempre custam n ao quadrado?
Quando os dois percorrem a mesma coleção de n itens, sim: n voltas externas vezes n internas dão n ao quadrado. Se os laços têm tamanhos diferentes, o custo é o produto dos dois tamanhos. O ponto é que aninhar laços sobre os mesmos dados grandes multiplica o custo, o que fica caro rápido.
Contar passos serve para qualquer algoritmo?
Serve como forma de pensar o custo de qualquer algoritmo. Você identifica as operações principais e conta quantas vezes rodam em função do tamanho dos dados. Isso dá a tendência de crescimento, que é o que a notação Big-O, na próxima aula, resume num vocabulário curto e universal.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.