Pular para o conteúdo

Algoritmos, lógica de programação e estruturas de dados

Prioridade Média 17 min de leitura Status: Não visto Lido Praticado Dominado

Do zero

Um algoritmo é uma receita: uma sequência finita de passos claros que leva de uma entrada a um resultado. Toda receita usa só três movimentos, que são a base da lógica de programação:

  • Sequência: faça um passo depois do outro.
  • Decisão: se a massa estiver mole, acrescente farinha (o if).
  • Repetição: mexa até engrossar (o while e o for).

E estrutura de dados é o jeito de arrumar as coisas para achá-las depressa. Cada arrumação serve para um uso:

  • Vetor (array): uma fileira de gavetas numeradas. Vai direto à gaveta 7, mas abrir espaço no meio obriga a empurrar todas as outras.
  • Lista encadeada: uma caça ao tesouro. Cada item diz onde está o próximo. Inserir no meio é fácil; chegar ao décimo item exige passar pelos nove anteriores.
  • Pilha: uma pilha de pratos. O último que entra é o primeiro que sai (LIFO). É o “desfazer” do editor.
  • Fila: a fila do banco. O primeiro que entra é o primeiro que sai (FIFO). É a fila de processos do protocolo.
  • Árvore: um organograma, com uma raiz e ramos. As pastas do computador são uma árvore.
  • Grafo: um mapa de cidades e estradas, em que qualquer ponto pode se ligar a qualquer outro.
  • Tabela hash: um armário em que uma regra transforma o nome (a chave) no número da gaveta. Achar o CPF 123 não exige olhar os outros.

Frase para guardar: pilha é o último que entra, fila é o primeiro que chega; vetor acessa pelo índice, lista encadeada pelo caminho; hash vai direto pela chave.

Em 1 minuto

  • Complexidade (notação O): como o tempo cresce quando a entrada cresce. Do melhor para o pior: O(1) constante, O(log n) logarítmico, O(n) linear, O(n log n), O(n²) quadrático.
  • Busca linear olha um a um: O(n). Busca binária exige a lista ordenada e corta o problema pela metade a cada passo: O(log n). Em um milhão de itens, cerca de 20 passos.
  • Ordenação: bubble, insertion e selection sort são O(n²); merge sort é O(n log n) sempre (e usa memória extra); quicksort é O(n log n) em média, mas O(n²) no pior caso; heap sort é O(n log n).
  • Recursão: uma função que chama a si mesma, com um caso base que a faz parar. Sem caso base, ela não termina (estouro de pilha).
  • Árvore binária de busca: à esquerda, menores; à direita, maiores. O percurso em ordem devolve os valores ordenados.

Exemplo concreto: a busca binária e a árvore dos processos

A busca binária é como procurar uma palavra no dicionário: abre no meio, vê se a palavra está antes ou depois e descarta metade.

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      # descarta a metade da esquerda
        else:
            fim = meio - 1         # descarta a metade da direita
    return -1                      # não encontrou

Com 1.024 processos ordenados, a busca linear pode precisar de 1.024 comparações; a binária, de no máximo 11 (1.024 → 512 → 256 → … → 1). Por isso o crescimento é logarítmico: dobrar a lista acrescenta só um passo.

Agora, uma árvore binária de busca montada com a chegada dos processos de números 8, 3, 10, 1, 6 e 14, nessa ordem. Cada número vai para a esquerda se for menor que o nó e para a direita se for maior:

          8
        /   \
       3     10
      / \      \
     1   6      14

Os três percursos clássicos mudam só o momento de visitar a raiz:

Percurso Ordem Resultado
Pré-ordem Raiz, esquerda, direita 8, 3, 1, 6, 10, 14
Em ordem (simétrico) Esquerda, raiz, direita 1, 3, 6, 8, 10, 14 (ordenado)
Pós-ordem Esquerda, direita, raiz 1, 6, 3, 14, 10, 8

Comparação: as estruturas e os algoritmos

Estrutura Acesso a um item Inserir ou remover Uso típico
Vetor O(1) pelo índice O(n) no meio (desloca os outros) Dados de tamanho conhecido, acesso por posição
Lista encadeada O(n) (percorre) O(1) se já está na posição Muitas inserções e remoções
Pilha Só o topo Empilhar e desempilhar (push, pop) em O(1) Desfazer, chamadas de função, expressões
Fila Só a frente Enfileirar no fim, retirar da frente, em O(1) Atendimento por ordem de chegada, impressão
Tabela hash O(1) em média, pela chave O(1) em média Busca por chave (CPF, matrícula)
Árvore binária de busca O(log n) se equilibrada; O(n) se degenerada O(log n) se equilibrada Dados ordenados com buscas frequentes
Algoritmo Melhor caso Caso médio Pior caso Observação
Busca linear O(1) O(n) O(n) Não exige ordenação
Busca binária O(1) O(log n) O(log n) Exige lista ordenada
Bubble sort O(n), na versão que para quando não há trocas O(n²) O(n²) Simples, lento
Insertion sort O(n) O(n²) O(n²) Bom para listas quase ordenadas
Merge sort O(n log n) O(n log n) O(n log n) Estável; usa memória extra
Quicksort O(n log n) O(n log n) O(n²) Rápido na prática; o pior caso depende do pivô

Uma pilha passo a passo: empilha 5, empilha 8, desempilha (sai o 8), empilha 3, empilha 9, desempilha (sai o 9), desempilha (sai o 3). Sobra o 5. Com uma fila e as mesmas operações, sairiam 5, 8 e 3, e sobraria o 9.

Como a FCC cobra

Simular pilha e fila (o que sai e o que sobra), percursos em árvore binária (pré, em e pós-ordem) e a complexidade das buscas e das ordenações.

  • Busca binária: requisito de ordenação e número de comparações.
  • Quicksort × merge sort no pior caso.
  • Qual estrutura escolher para um problema.
  • Trechos de pseudocódigo com laços e condições: qual o valor final de uma variável.
  • Recursão e caso base.

Pegadinhas

  • “A busca binária funciona em qualquer vetor.” Falso: o vetor precisa estar ordenado.
  • “O quicksort é O(n log n) em qualquer caso.” Falso: no pior caso (pivô ruim, como numa lista já ordenada com o primeiro elemento de pivô) chega a O(n²); o merge sort (e também o heap sort) garante O(n log n).
  • “Na fila, o último elemento inserido é o primeiro a sair.” Falso: isso é a pilha (LIFO); a fila é FIFO.
  • “Lista encadeada dá acesso direto ao enésimo elemento.” Falso: é preciso percorrer desde o início; acesso direto pelo índice é do vetor.
  • “O percurso em pré-ordem de uma árvore binária de busca devolve os valores ordenados.” Falso: quem devolve em ordem crescente é o percurso em ordem (esquerda, raiz, direita).

Explique com suas palavras

Explique a um colega por que a busca binária precisa de no máximo uns 20 passos num milhão de itens, e por que ela não funciona se a lista estiver fora de ordem.

  1. Escreva sem olhar a lição, com frases curtas e um exemplo seu.
  2. Onde travar ou precisar de jargão, há uma lacuna: releia só essa parte.
  3. Compare com a explicação-modelo e reescreva o que faltou.

Fica salva neste navegador.

Comparar com uma explicação-modelo

A busca binária olha o item do meio e pergunta: o que procuro está antes ou depois? Como a lista está em ordem, a resposta permite jogar fora metade dos itens de uma vez. Um milhão vira meio milhão, depois 250 mil, e assim por diante. Dividindo um milhão pela metade umas 20 vezes, sobra um item só, por isso bastam cerca de 20 passos.

Se a lista estiver bagunçada, olhar o meio não diz nada sobre onde está o resto: o item procurado pode estar em qualquer das metades. Aí não dá para descartar nada, e o jeito é olhar um por um, a busca linear.

Teste-se

Desenvolvimento de Sistemas · Algoritmos e estruturas de dados · Inédita, estilo FCC

Questão 1 de 3

Numa pilha inicialmente vazia, executam-se, nesta ordem: empilhar 5; empilhar 8; desempilhar; empilhar 3; empilhar 9; desempilhar; desempilhar. Os elementos desempilhados, na ordem em que saíram, foram

Alternativas

A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.

Toque longo numa alternativa para riscá-la.

Desenvolvimento de Sistemas · Algoritmos e estruturas de dados · Inédita, estilo FCC

Questão 2 de 3

Para localizar um registro numa lista ordenada com 1.000.000 de elementos, a busca binária precisa, no pior caso, de aproximadamente

Alternativas

A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.

Toque longo numa alternativa para riscá-la.

Desenvolvimento de Sistemas · Algoritmos e estruturas de dados · Inédita, estilo FCC

Questão 3 de 3

Numa árvore binária de busca inicialmente vazia, inserem-se, nesta ordem, os valores 8, 3, 10, 1, 6 e 14. O percurso dessa árvore em pré-ordem é

Alternativas

A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.

Toque longo numa alternativa para riscá-la.

Mais duas questões deste tópico estão em Questões.

Flashcards gerados

FrenteVerso
As três estruturas da lógica de programação Sequência (um passo depois do outro), decisão (if) e repetição (while, for).
Ordem das complexidades Da mais rápida à mais lenta, O(1), O(log n), O(n), O(n log n), O(n²).
Vetor × lista encadeada O vetor acessa qualquer posição em O(1), mas inserir no meio desloca os outros; a lista encadeada insere fácil, mas precisa percorrer para chegar a um item.
O que é recursão? Uma função que chama a si mesma com um problema menor, até chegar a um caso base que encerra as chamadas. Exemplo: fatorial(n) = n · fatorial(n − 1), com fatorial(0) = 1.
Árvore binária de busca Cada nó tem, à esquerda, valores menores e, à direita, maiores; equilibrada, busca em O(log n).

Ligação com o estudo de caso

Num caso sobre desempenho de um sistema, justifique a escolha da estrutura pela operação mais frequente: busca por chave pede hash ou índice; atendimento por ordem de chegada pede fila; dados que precisam sair ordenados pedem árvore ou ordenação O(n log n). Mostrar a complexidade (de O(n²) para O(n log n), por exemplo) é o argumento técnico que a banca espera.

Fontes da lição

  • Edital nº 01/2026, Anexo II, Desenvolvimento de Sistemas (fontes/edital-01-2026.txt).
  • Thomas Cormen e outros, Algoritmos: teoria e prática (complexidade, ordenação, árvores e tabelas hash).
  • Nivio Ziviani, Projeto de algoritmos (estruturas de dados e pesquisa em memória).

Claude explica

Tire dúvidas sobre este tema no Claude: o site copia o pedido com a lição e abre uma conversa nova, na sua conta. Confira na fonte qualquer fato de lei ou de norma.

Pratique fora do site

Faça questões da FCC sobre este tópico no QConcursos ou no Gran e registre aqui quantas fez: elas contam na meta da semana e no status do tópico.

Registrar questões feitas lá
Errei uma questão lá: criar flashcard