Pular para o conteúdo
~/buildbase $ 06/11/2026
Algoritmos

O que é algoritmo e como ele aparece além da programação

Painéis do ENIAC, um dos primeiros computadores eletrônicos

Algoritmo não nasceu no computador. A palavra vem do nome de Muhammad ibn Musa al-Khwarizmi, matemático que trabalhou em Bagdá no século IX e escreveu sobre como fazer contas com o sistema de numeração indo-arábico, passo a passo. Mais de mil anos antes do primeiro processador, já existia gente seguindo procedimentos exatos para chegar a um resultado.

$ ls ./neste-artigo
  1. Achar que algoritmo só existe dentro do computador
  2. Confundir algoritmo com programa
  3. Esquecer que todo algoritmo precisa terminar
  4. Medir eficiência pelo tempo no seu notebook
  5. Decorar algoritmos famosos sem entender a ideia por trás
  6. Ignorar os algoritmos que decidem coisas por você
  7. Pular o papel e ir direto para o código

Isso muda a forma de estudar o assunto. Quem acha que algoritmo é “coisa de código” tende a decorar sintaxe e travar no primeiro problema novo. Quem entende que é um método consegue resolver em papel antes de abrir o editor.

Resumo do verbete: algoritmo é uma sequência finita de passos bem definidos que recebe uma entrada e produz uma saída. Receita de bolo, rota do GPS e a ordenação dos seus e-mails por data são algoritmos. Na programação, o que separa um algoritmo bom de um ruim é quanto trabalho ele faz quando a entrada cresce.

O verbete do glossário da MDN segue essa mesma linha: um conjunto de instruções autocontido que executa uma função. Você encontra outros termos como este no glossário de programação do site; neste texto, o foco são os enganos que mais atrasam quem está começando.

 

Achar que algoritmo só existe dentro do computador

Estudante anotando passos num caderno ao lado de um notebook fechado
Antes de virar código, um algoritmo pode ser escrito no papel, passo a passo. Foto: Pexels

 

Pense em como você confere o troco no mercado. Você subtrai o valor da compra do valor pago, compara com o que recebeu e decide se reclama. Tem entrada (preço e nota entregue), processamento (subtração e comparação) e saída (aceitar ou contestar). É um algoritmo.

Outros exemplos que você executa sem perceber:

  • Procurar uma palavra no dicionário de papel: abrir no meio, ver se a palavra vem antes ou depois, descartar metade e repetir.
  • Montar um móvel: o manual numerado é um algoritmo com ordem obrigatória. Trocar o passo 4 pelo 7 costuma dar errado.
  • Dividir a conta do bar: somar, aplicar os 10% e dividir pelo número de pessoas, com a regra extra de quem não bebeu.

O custo de ignorar isso é prático. O iniciante que só pensa em código começa digitando e descobre no meio que não sabe o que o programa deveria fazer. Escrever os passos em português primeiro economiza horas de depuração.

 

Confundir algoritmo com programa

O algoritmo é a ideia; o programa é uma das formas de escrever essa ideia numa linguagem que a máquina executa. O mesmo algoritmo de busca binária pode virar código em Python, Java ou C, e continua sendo o mesmo algoritmo.

Na prática, isso explica por que entrevistas técnicas pedem para você “explicar a abordagem” antes de codar. O entrevistador quer ver o algoritmo. A linguagem é detalhe.

Veja a busca do dicionário traduzida para Python:

def busca_binaria(lista, alvo):
    inicio, fim = 0, len(lista) - 1
    while inicio <= fim:
        meio = (inicio + fim) // 2
        if lista[meio] == alvo:
            return meio
        if lista[meio] < alvo:
            inicio = meio + 1
        else:
            fim = meio - 1
    return -1

Se a lista não estiver ordenada, o código roda sem erro e devolve resposta errada. Esse é o tipo de falha que nenhum compilador aponta, porque o problema está no algoritmo, não na escrita.

 

Esquecer que todo algoritmo precisa terminar

Uma das propriedades clássicas de um algoritmo é a finitude: ele chega ao fim depois de um número finito de passos. Um procedimento que roda para sempre não resolve nada.

Parece óbvio até você escrever um while cuja condição nunca fica falsa. O programa congela, o ventilador do notebook acelera e você não sabe por quê. As outras propriedades que os livros costumam listar também evitam dor de cabeça:

  1. Entrada definida: o que o algoritmo recebe, e em que formato.
  2. Saída definida: o que ele devolve, inclusive no caso de não encontrar nada (o -1 do exemplo acima).
  3. Passos sem ambiguidade: “mexa até dar o ponto” funciona para a avó, não para a máquina.
  4. Finitude: existe garantia de parada.
  5. Efetividade: cada passo é executável de fato, com os recursos disponíveis.

Uma boa checagem antes de rodar: pergunte em que linha a condição de parada muda. Se a resposta for “nenhuma”, você achou o laço infinito.

 

Medir eficiência pelo tempo no seu notebook

Este é o erro mais caro, porque só aparece quando o sistema cresce.

Rodar o código e cronometrar diz pouco: o resultado muda com a máquina, com o que mais está aberto e com o tamanho do teste. Para comparar algoritmos, quem estuda computação conta quantas operações ele faz em função do tamanho da entrada, chamado de n. Essa contagem é escrita com a notação Big O.

Volumes do livro The Art of Computer Programming enfileirados
Os volumes de The Art of Computer Programming, de Donald Knuth, referência clássica em análise de algoritmos. Foto: Raimond Spekking / Wikimedia Commons (CC BY-SA 4.0)

 

A tabela mostra o que acontece com o número aproximado de passos quando a lista cresce:

OrdemExemplo típicon = 1.000n = 1.000.000
O(1)Acessar posição de uma lista pelo índice11
O(log n)Busca binária em lista ordenadacerca de 10cerca de 20
O(n)Percorrer a lista uma vez1.0001.000.000
O(n log n)Ordenações eficientes, como merge sortcerca de 10.000cerca de 20 milhões
O(n²)Dois laços aninhados, como o bubble sort1.000.0001 trilhão

Repare na última linha. Com mil itens, um algoritmo quadrático parece rápido no seu teste. Com um milhão de clientes na base, ele faz um trilhão de operações. É o cenário clássico do relatório que “sempre funcionou” e passa a travar o servidor quando a empresa cresce.

A apostila de projeto de algoritmos do professor Paulo Feofiloff, do IME-USP, é um bom caminho em português para aprender a fazer essa análise com rigor, inclusive com exercícios.

 

Decorar algoritmos famosos sem entender a ideia por trás

Bubble sort, busca binária, Dijkstra, quicksort. Dá para decorar todos e continuar sem saber resolver um problema que não está no livro.

O que vale guardar são as estratégias, porque elas se repetem:

  • Dividir e conquistar: quebrar o problema em pedaços menores do mesmo tipo (busca binária, merge sort).
  • Guloso: escolher a melhor opção local a cada passo, como dar troco começando pela maior moeda.
  • Força bruta: testar todas as possibilidades. Lento, mas às vezes é o ponto de partida honesto.
  • Programação dinâmica: guardar resultados de subproblemas para não recalcular.

A estratégia gulosa do troco, aliás, funciona com as moedas brasileiras, mas falha em sistemas de moedas inventados (com moedas de 1, 3 e 4, o troco de 6 sai como 4+1+1, quando 3+3 usa menos moedas). Entender por que ela falha ali ensina mais do que decorar dez algoritmos.

 

Ignorar os algoritmos que decidem coisas por você

Fora da sala de aula, algoritmo virou sinônimo de “sistema que escolhe o que eu vejo”. O feed da rede social, o anúncio que aparece e o plano de saúde sugerido por um comparador passam por regras de ordenação e filtragem.

Esses sistemas misturam algoritmos clássicos (ordenar, filtrar, pontuar) com modelos estatísticos treinados em dados. Se você quiser ver dois casos concretos, o buildbase já explicou como os algoritmos de anúncios aprendem com os dados e como o algoritmo de uma corretora filtra planos.

Para o desenvolvedor júnior, a lição é que quem escreve a regra de ordenação decide o que o usuário vê primeiro. Um critério mal pensado (ordenar só por preço, por exemplo) pode esconder a opção certa para a maioria das pessoas.

 

Pular o papel e ir direto para o código

O hábito que mais acelera iniciantes é simples: antes de programar, resolva um exemplo pequeno à mão.

Pegue o problema “encontrar o maior número de uma lista”. Escreva a lista [7, 3, 12, 5] num papel e faça o que faria sem computador. Você vai perceber que guarda um “maior até agora” e compara com cada número seguinte. Pronto: o algoritmo está descoberto, e o código vira tradução.

Para treinar esse olhar, o material da USP sobre o algoritmo de busca binária explicado pelo IME-USP mostra cada invariante do laço, o tipo de raciocínio que separa código que funciona por sorte de código que funciona porque foi pensado. Comece por ele e só depois parta para os algoritmos de grafos.