En faisant le deuxième code kata (qui vous demande d'implémenter cinq fois un algorithme de recherche binaire, à chaque fois avec une méthode différente), j'ai trouvé une solution légèrement différente qui fonctionne comme suit:
Si j'ai un tableau trié de longueur 100 et que je vois que son champ de départ contient le nombre 200 et son champ de fin contient le nombre 400, moi, en tant qu'étudiant en mathématiques, je serais susceptible de commencer à chercher autour du champ 35 si je cherchais le numéro 270, et non le champ 50 comme dans un algorithme de recherche binaire normal.
Ensuite, si le nombre sur le champ 35 du tableau est 270, 35 est l'index que je cherchais.
Si ce n'est pas le cas, je peux comparer le nombre obtenu (disons 280) et répéter l'opération en prenant la partie inférieure du tableau (j'ai donc 35 champs avec le champ de départ contenant 200 et le champ de fin contenant 280) si le le nombre que j'ai trouvé est supérieur à ce que je recherche, ou à la partie supérieure du tableau (disons que j'en ai 260: maintenant j'ai 65 index, le premier contenant 260 et le dernier contenant 400. Orientativement, je me dirigerais vers torward index 4 de ce sous-tableau, qui est l'index 39 de l'ensemble du tableau) si le nombre que j'ai obtenu est inférieur au nombre que je recherche.
La question est: cet algorithme peut-il être considéré comme un algorithme de recherche binaire? Sinon, a-t-il son propre nom?