Mentre eseguo il secondo codice kata (che ti chiede di implementare un algoritmo di ricerca binaria cinque volte, ogni volta con un metodo diverso), ho trovato una soluzione leggermente diversa che funziona come segue:
Se ho una matrice ordinata di lunghezza 100 e vedo che il suo campo iniziale contiene il numero 200 e il suo campo finale contiene il numero 400, io, come un matematico che studia umano, probabilmente inizierei a cercare intorno al campo 35 se stavo cercando il numero 270 e non il campo 50 come in un normale algoritmo di ricerca binaria.
Quindi, se il numero sul campo 35 dell'array è 270, 35 è l'indice che stavo cercando.
In caso contrario, posso confrontare il numero ottenuto (ad esempio 280) e ripetere l'operazione prendendo la parte inferiore dell'array (quindi ho 35 campi con il campo iniziale contenente 200 e il campo finale contenente 280) se il il numero che ho trovato è maggiore di quello che sto cercando, o la parte superiore dell'array (diciamo che ho ottenuto 260: ora ho 65 indici, il primo contenente 260 e l'ultimo contenente 400. Orientativamente, andrei avanti indice 4 di questo array secondario, che è l'indice 39 dell'intero array) se il numero ottenuto è inferiore al numero che sto cercando.
La domanda è: questo algoritmo può essere considerato un algoritmo di ricerca binaria? In caso contrario, ha il suo nome?