Introdução
A busca binária ou pesquisa binária é um algoritmo que possui o conceito "divisão e conquista", tendo como premissa um vetor ordenado, onde serão realizadas divisões ao meio do vetor, reduzindo a análise por amostras do vetor a cada iteração. Diferentemente da busca linear onde podemos ter um custo de percorrer todo o vetor.
Implementação
A implementação do algoritmo foi feita em Python, uma linguagem que eu considero adequada para estudos de algoritmos.
Esta implementação trabalha com três cursores esquerda (left), meio (middle) e direita (right), a cada iteração validamos se o valor do meio é o alvo, caso contrário os cursores left e right serão ajustados e no inicio do loop (while) ocorre o calculo do meio do vetor, considerando uma nova amostra de vetor.
- No caminho feliz encontramos o alvo no meio do vetor;
- Caso contrário, o cursor esquerdo será ajustado (meio +1) quando o valor da extremidade esquerda for menor que o alvo;
- Caso contrário o cursor da direta será ajustado (meio -1) caso a condição anterior não seja atendida;
As instruções abaixo definem um teste usando pytest para validar a implementação do algoritmo.
Você pode manter a função e o teste em um único arquivo.
Para executar digite pytest e nome do arquivo, exemplo:
Teste de mesa
Para entender a lógica do algoritmo temos o teste de mesa com cada iteração, lembrando que o número escolhido foi o 21.

Fim!
Espero que a abordagem tenha ajudado a entender ou relembrar esse algoritmo que juntamente ao BubbleSort são temas recorrentes das aulas de algoritmos na faculdade ou cursos.
Mantenha sempre seu kernel atualizado meu amigo!
