pré-condição / entrada ordenada A busca binária só é válida quando os valores estão em ordem. A bancada ordena a sequência antes do playback para tornar essa condição visível.
sequência / ordenadaalvo 67início 1fim 16
401
902
1203
1604
1805
2506
2907
3108
3809
4210
4811
5412
6013
6714
7115
7616
comparação ativa encontrado intervalo atual
telemetria / busca
passo00input ordenado — pronto para busca binária
comparações00decisões observadas
alvo67procurando
estadoprontoplayback controlado
playback observado · busca
Duração que aconteceu.
Execuções concluídas nesta bancada, medidas durante o playback ativo no navegador e salvas apenas neste dispositivo.
média / últimas 0—Binary · armazenamento local
sem registros ainda
Execute o algoritmo até o fim para transformar esta bancada em uma série de medições reais.
/ leitura do intervalo
Binary Search corta o espaço.
Use quando os dados estão ordenados e você precisa de uma resposta rápida em coleções maiores.
÷
mude o meio A cada decisão, metade dos candidatos deixa de existir.
complexidade
melhorO(1)
médioO(log n)
piorO(log n)
Exige uma sequência ordenada antes de começar.
Como ler esta réguaEla não mede o tempo do seu aparelho: compara como o número de operações tende a crescer quando n, a quantidade de itens, aumenta.
operações
O(log n) · Crescimento logarítmico
A cada decisão, o algoritmo elimina metade dos candidatos. O log₂(n) conta quantos cortes pela metade são necessários para chegar a um item.
Com 16 itens são, no máximo, 4 cortes; com 32, 5. Dobrar a entrada adiciona apenas um corte.
comparação / duas técnicas
Compare o crescimento lado a lado
Escolha duas técnicas diferentes. As curvas usam a mesma escala visual para explicar como o custo tende a aumentar.
Use este par para observar por que O(n²) acumula trabalho mais depressa que O(n log n) quando a lista cresce. Merge Sort tende a crescer mais devagar do que Bubble Sort quando aumentam quantidade de itens (n). Isso descreve tendência assintótica, não mede o tempo do seu aparelho.
/ leitura técnica da busca
A metade só desaparece porque a ordem sustenta o corte.
Binary Search não “adivinha” onde a chave está. Ela preserva um intervalo candidato e compara o alvo com o seu meio. Em uma sequência crescente, um valor menor que o alvo torna toda a metade esquerda incompatível; um valor maior torna a metade direita incompatível. Essa conclusão depende da mesma ordem usada para organizar e comparar os dados.
01 / CONTRATO
Ordenação é uma hipótese, não um detalhe visual.
A faixa pesquisada precisa estar ordenada segundo o mesmo critério da consulta. A bancada ordena a sequência para tornar essa pré-condição visível; em um sistema real, decidir ou manter essa ordem faz parte do problema, não é uma etapa gratuita.
02 / INVARIANTE
Se a chave existe, ela permanece no intervalo ativo.
Antes de cada comparação, pelo menos uma ocorrência possível está entre low e high. Se o meio é menor, low = mid + 1; se é maior, high = mid - 1. O meio incompatível também sai do intervalo.
03 / TÉRMINO
O intervalo encolhe até decidir.
Cada passo sem igualdade remove ao menos uma posição candidata. Encontrar o meio encerra com uma ocorrência; quando low > high, nenhum índice compatível restou e a ausência está comprovada.
/ custo e estrutura
O(log n) conta cortes; não promete tempo idêntico em qualquer coleção.
Após cada comparação, restam aproximadamente metade dos candidatos. Em um array, acessar o meio é direto, por isso a busca iterativa usa memória auxiliar O(1). Em uma lista ligada, chegar repetidamente ao meio pode exigir travessias longas: as comparações continuam poucas, mas o custo de acesso deixa de acompanhar a mesma leitura simples.
MELHOR CASOO(1)O alvo é o primeiro meio testado.
MÉDIO E PIORO(log n)O intervalo é reduzido a cada decisão.
MEMÓRIA ITERATIVAO(1)Sem copiar a coleção.
PREPARAÇÃOO(n log n)Se os dados ainda precisarem ser ordenados.
DUPLICATAS MUDAM A PERGUNTA
“Existe?” não é o mesmo que “onde começa?”.
O contrato básico retorna uma ocorrência ao encontrar igualdade; com duplicatas, ela pode não ser a primeira. Para paginação, faixas, inserção ordenada ou qualquer regra que dependa de fronteira, escolha explicitamente a variante desejada em vez de depender por acaso do índice retornado.
OBJETIVOAO ENCONTRAR IGUALDADERESULTADO
uma ocorrênciaretorne imediatamenteíndice compatível
primeira ocorrênciaguarde e siga à esquerdalower bound
posição de inserçãoesvazie o intervaloordem preservada
DECISÃO DE ENGENHARIA
O ganho aparece quando a ordem pode ser reaproveitada.
Para uma única consulta em uma lista pequena e fora de ordem, Linear Search evita a preparação de ordenar. Para muitas consultas sobre dados estáticos e já ordenados, Binary Search reduz as comparações por consulta. Em termos simplificados, compare q·n de varreduras lineares com n log n + q log n de ordenar uma vez e buscar q vezes. O modelo não substitui avaliar atualizações, memória e a estrutura de dados, mas impede que O(log n) vire uma recomendação automática.
/ conexões de estudo
Continue pela mesma ideia.
Estas bancadas usam conceitos próximos e ajudam a comparar decisões, estruturas e custos.
/ por baixo do palco
Pseudocódigo e implementação.
Cada linha acompanha o gesto visual. Troque de linguagem e continue no mesmo passo.
01defina baixo e alto
02encontre o meio
03compare meio e alvo
04elimine metade do intervalo
05repita até encontrar
/ implementação sincronizada
01function binarySearch(items, target) { // Halve the sorted search interval02 let low = 0, high = items.length - 1;03 while (low <= high) {04 const mid = Math.floor((low + high) / 2);05 if (items[mid] === target) return mid;06 if (items[mid] < target) low = mid + 1;07 else high = mid - 1;08 }09 return -1;10}