Fala, David! É uma dúvida justa kkkkk

Uma coisa importante pra gente se atentar é em relação a alocação de recursos. E que "instantâneo" não é bem uma medida, por ser uma coisa que varia muito a depender do referencial.

Por exemplo, se falamos de uma comporta de uma usina hidroelétrica e dizemos que ela se abre completamente em 5 segundos, isso pode ser considerado instantâneo. No entanto, se falamos de uma plataforma de Daytrade q leva 5 segundos pra submeter uma ordem isso pode ser uma eternidade kkkkkkk

E sobre alocação de recursos, esses algoritmos costumam ter por objetivo otimizar performance. Oq pode ser com velocidade, ou com economia de bits, por exemplo. Podem ser menos dados sendo armazenados na memória ram, ou menos dados sendo trafegados na rede, ou sla. No fim das contas, se vc extrapolar pr'um cenário com muitos dados e muitos usuários, a economia pode ser bastante expressiva, até.

Eu n tenho a resposta precisa que cê tá buscando, mas eu acho que com essa dúvida sua cê tá num caminho muito bom.

Fica aí o desafio pra vc cronometrar o tempo de execução da pesquisa normal do Python e da pesquisa utilizando o binary search (plmds, não é pra cronometrar com o celular, não, hein. É via código kkkkkk)

Dica simples pra vc cronometrar (não necessariamente a mais correta)

Importe o módulo nativo com time já importando o método a ser usado (q tbm se chama time), ficando

from time import time

Aí vc cria uma instância de inicio pra salvar o timestamp, e uma instância dps do fim do código. Aí vc calcula a duração do trecho fazendo a diferença do tempo final com o tempo inicial. E depois é só vc salvar isso numa variável e ajustar a formatação (a formatação eu n lembro de cabeça. Cê vai precisar dar uma pesquisada).

O resultado deve se parecer com isso

from time import time


def funcao_sua():
   inicio1 = time()
   [...seu código todo...]
   fim1 = time()
   duracao1 = fim1 - inicio1
   print(duracao1)
   
 
def binary_search():
   inicio2 = time()
   [...código todo...]
   fim2 = time()
   duracao2 = fim2 - inicio2
   print(duracao2)  


funcao_sua() 

binary_search()

Lembrando de ver como fazer a conversão do timestamp puro pra segundos. De cabeça eu não lembro, então vou ficar devendo kkkkkkk

Caro João, obrigado pela atenção. Farei o teste cronometrado (via código kkkk) e trarei por aqui o resultado.

Bom dia! Acho que posso esclarecer. Primeiro, usar a função nativa do Python quase sempre é mais rápido, porque ele já tem o melhor algoritmo intrínseco na função.

Entender o binary search faz parte do entendimento geral de algoritmos, não necessariamente você vai usar na prática, mas isso constrói conhecimento que será reaproveitado em outro momento, como diversos assuntos de matemática.

Quase sempre, novamente não será necessário desenvolver algoritmos básicos, pois eles são nativos, como citei. Mas quem sabe não é possível averiguar se o Python ou outra lang usa esse algoritmo para fazer sua busca?

Uma utilidade prática desses algoritmos que posso pensar é apenas em situações de restrição de uso de funções nativas, como em um teste de lógica.

Caro Deivid (chará), primeiramente obrigado. Concordo contigo. Certamente a função nativa da linguagem utiliza o que há de melhor em termos de algoritmo.