🚀 Capítulo 19: Algoritmos de Busca (Linear e Binária) (Tema: Onde está o Wally?)
NOTE
Este capítulo utiliza a temática de Onde está o Wally? para explicar os algoritmos de busca. Encontrar alguém na multidão exige estratégia!
1. 🎯 Objetivo da Aula
Compreender a diferença entre a Busca Linear e a Busca Binária, entendendo a importância de ter os dados ordenados para alcançar a máxima eficiência .
2. 🏢 O Cenário Prático (Seu Desafio)
Você tem um livro do “Onde está o Wally?“.
- Cenário A: As pessoas na página estão todas misturadas. Você precisa olhar pessoa por pessoa, da esquerda para a direita, até achar o Wally. Isso é a Busca Linear.
- Cenário B: Imagine que, por mágica, as pessoas na página estivessem organizadas por altura, da menor para a maior! Para achar o Wally (que tem uma altura média), você não precisa olhar um por um. Você olha a pessoa que está exatamente no meio da página. Se ela for mais alta que o Wally, você já sabe que o Wally está na metade esquerda! Você acabou de eliminar metade da página com um único olhar. Isso é a Busca Binária.
Seu desafio é entender a velocidade incrível da Busca Binária!
3. 🧠 Fundamentos: A Teoria Traduzida
🔍 1. Busca Linear
- Como funciona: Percorre a estrutura do início ao fim, comparando cada elemento com o valor buscado.
- Requisito: Nenhum. Funciona em listas bagunçadas.
- Eficiência: (Se a lista tiver 1 milhão de pessoas, no pior caso você faz 1 milhão de buscas).
🎯 2. Busca Binária
- Como funciona: Divide a lista ao meio repetidamente. Compara o item do meio com o valor buscado e descarta a metade onde o item com certeza não está.
- Requisito: A lista PRECISA estar ordenada!
- Eficiência: (Se a lista tiver 1 milhão de pessoas, no pior caso você faz apenas cerca de 20 buscas!).
4. 📖 Exemplo Guiado: Adivinhando o Número
Pense em um jogo de adivinhar um número de 1 a 100.
- Se você chutar
1, depois2, depois3… você está fazendo Busca Linear. - Se você chutar
50e eu disser “É maior”, você agora só precisa procurar de 51 a 100. Você eliminou 50 números com um chute! Isso é Busca Binária.
5. 🛠️ Prática Obrigatória 1: O Número de Chutes
Se estivermos jogando o jogo de adivinhar o número de 1 a 100 usando a Busca Binária:
- Qual é o seu primeiro chute?
- Se a resposta for “É menor”, qual é o seu segundo chute?
- Qual é o número máximo de chutes que você precisará dar para acertar qualquer número de 1 a 100?
6. 🛠️ Prática Obrigatória 2: Vale a pena ordenar?
A Busca Binária é muito mais rápida, mas exige que a lista esteja ordenada. Se você tem uma lista bagunçada e só vai fazer uma única busca nela, vale a pena gastar tempo ordenando a lista (com Quick Sort) só para poder usar a Busca Binária? Ou é melhor fazer uma Busca Linear direto?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 19 Estruturas de Dados) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
mod_09_estruturas_de_dados/
├── capitulos/
│ ├── capitulo_19_busca.md
│ └── codigos/
│ └── cap19/
│ └── busca_binaria.js9. 💡 Checkpoint de Lógica
Por que o algoritmo de Busca Binária não funciona em uma Lista Ligada (Linked List), mesmo que ela esteja ordenada? (Dica: Lembra como acessamos o elemento do meio em uma lista ligada?).
10. 🔥 Desafio de Fixação
Pesquise o que é a Busca por Interpolação (Interpolation Search) e como ela tenta ser ainda mais inteligente que a Busca Binária (parecido com o modo como nós procuramos uma palavra no dicionário de papel).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Primeiro chute: 50 (o meio).
- Segundo chute: 25 (o meio entre 1 e 49).
- Número máximo de chutes: 7 (pois , que é maior que 100).