Busca sequencial x busca binária – contando comparações
ComputaçãoAlgoritmos e resolução de problemasIdades 12–13
Use com a sua turma: os alunos abrem por um link ou QR code, sem precisar de conta.
O mesmo vetor e o mesmo valor procurado passam lado a lado pela busca sequencial (percorrendo desde o início) e pela busca binária (dividindo o intervalo ao meio num vetor ordenado). Os alunos clicam em Passo ou Reproduzir para ver a célula sendo comparada, o intervalo sendo descartado e o número de comparações de cada algoritmo; clicar em uma célula muda o valor procurado, e desligar a ordenação mostra por que a busca binária deixa de funcionar.
Aula: Algoritmo de busca sequencial; algoritmo de busca binária
O que mostra
A busca sequencial verifica os elementos um a um desde o início, então no pior caso precisa de tantas comparações quanto o número de elementos. A busca binária compara o valor procurado com o elemento do meio de um vetor ordenado e descarta a metade que não pode contê-lo, por isso precisa de no máximo cerca de log₂n + 1 comparações: apenas cinco para dezesseis elementos. Contar as comparações dos dois algoritmos no mesmo vetor mostra por que a binária vence em listas longas e por que ela depende totalmente de os dados estarem ordenados.
Como usar
Coloque Algoritmo em Os dois (comparar), escolha o Número de elementos e clique em Passo para acompanhar cada comparação: a célula destacada, os marcadores low, mid e high e a parte do vetor descartada. Clique em uma célula para mudar o valor procurado ou use Reproduzir para uma execução completa. Teste um valor perto do início do vetor e depois desmarque Vetor em ordem crescente para ver por que a busca binária deixa de funcionar.
Parâmetros que você pode mudar
- Número de elementos 5–20
- Valor procurado (0 = sortear do vetor) 0–99
- Algoritmo Os dois (comparar), Busca sequencial, Busca binária
- Vetor em ordem crescente
- Velocidade de execução 1–5 passos/s
Perguntas para explorar
- Qual é o maior número de comparações de que a busca binária precisa para achar um valor num vetor de 16 elementos?
- Para quais valores procurados a busca sequencial precisa de menos comparações que a binária?
- Por que a busca binária não pode ser usada quando o vetor não está ordenado?