Trilha 01 · Fundamentos

Eficiência e complexidade

Duas soluções podem estar igualmente "certas" — e mesmo assim uma ser milhões de vezes mais rápida.

① Intuição

Certo não basta — precisa escalar

Imagine procurar um nome numa agenda telefônica. Você pode olhar página por página, do começo ao fim (lento), ou abrir no meio e ir cortando metade a cada vez (rapidíssimo). As duas estratégias funcionam — mas, conforme a agenda cresce, a diferença entre elas se torna gigantesca.

Por isso, em computação, não basta perguntar "funciona?". Perguntamos: como o custo cresce quando os dados aumentam?

② Visualização interativa

Veja as curvas explodirem

Arraste o n (tamanho da entrada) e observe quantas operações cada tipo de algoritmo precisa. Repare como o O(n²) dispara enquanto o O(log n) mal sai do lugar:

Como o número de operações cresce conforme a entrada (n) aumenta
opsn
O(1)1O(log n)5O(n)16O(n log n)80O(n²)256

É essa diferença de crescimento — não o número exato — que a notação Big O captura.

③ Explicação técnica

Notação Big O

Big O descreve como o número de operações cresce em função de n, ignorando constantes e detalhes de máquina. O(2n) e O(n) são a mesma classe: o que importa é a forma do crescimento.

          n=10      n=1.000        n=1.000.000
O(1)        1         1              1
O(log n)    ~3        ~10            ~20
O(n)        10        1.000          1.000.000
O(n log n)  ~33       ~10.000        ~20.000.000
O(n²)       100       1.000.000      1.000.000.000.000

Olhe a última coluna: para um milhão de itens, um algoritmo O(n²) faz um trilhão de operações — inviável. O O(n log n) faz vinte milhões. Mesma resposta, mundos diferentes.

Tempo vs. memória, e os três casos

Contando operações você mesmo

função buscaLinear(lista, alvo):
    operacoes = 0
    para cada item na lista:
        operacoes += 1
        se item == alvo:
            retorne operacoes   # achou!
    retorne operacoes              # pior caso: olhou tudo
④ Projeto para programar

Meça de verdade

Mini projeto: adicione um contador de operações a um laço e veja o número subir conforme a entrada cresce.

Projeto principal: compare busca linear e busca binária na mesma lista ordenada, contando os passos de cada uma.

Desafio extra: meça o tempo real (em ms) de ordenar listas de 1.000, 10.000 e 100.000 itens e veja a curva aparecer.

⑤ Exercícios rápidos

Teste sua intuição

O que a notação Big O descreve?
Para listas enormes, qual destas é a mais eficiente?
Sobre O(2n) e O(n): …
⑥ Aplicações no mundo real

Onde você encontra isso

🐌

Apps que travam

Um algoritmo O(n²) escondido faz o app engasgar quando os dados crescem.

🗄️

Índices de banco

Existem justamente para transformar buscas O(n) em O(log n).

📈

Escalar sistemas

Decidir a complexidade certa é o que separa um app de 100 e de 100 milhões de usuários.

🎮

Jogos

Cada quadro tem poucos milissegundos: complexidade demais = travamento.

← Anterior: Binário & decimal Próxima: Lógica básica →