Enquanto fazia o segundo código kata (que solicita a implementação de um algoritmo de pesquisa binária cinco vezes, cada vez com um método diferente), criei uma solução ligeiramente diferente que funciona da seguinte maneira:
Se eu tiver uma matriz classificada com o comprimento 100 e vejo que o campo inicial contém o número 200 e o campo final contém o número 400, eu, como um matemático que estuda humano, provavelmente começaria a pesquisar no campo 35 se estivesse pesquisando o número 270, e não o campo 50 como em um algoritmo de pesquisa binária normal.
Então, se o número no campo 35 da matriz for 270, 35 é o índice que eu estava procurando.
Se esse não for o caso, posso comparar o número obtido (digamos 280) e repetir a operação na parte inferior da matriz (então, tenho 35 campos com o campo inicial contendo 200 e o final com 280) se o o número que encontrei é maior do que o que estou procurando, ou a parte superior da matriz (digamos que tenho 260: agora tenho 65 índices, o primeiro contendo 260 e o final contendo 400. Orientativamente, eu iria índice 4 dessa sub-matriz, que é o índice 39 de toda a matriz) se o número que eu obtiver for menor que o número que estou procurando.
A questão é: esse algoritmo pode ser considerado um algoritmo de pesquisa binária? Caso contrário, ele tem seu próprio nome?