In un recente incarico per la mia classe di programmazione 2 abbiamo testato l'efficienza delle ricerche popolando un ArrayList java con 13.040 stringhe. La ricerca sequenziale era ovviamente più lenta delle ricerche binarie a causa della differenza di complessità e della quantità di volte in cui il codice deve effettivamente scorrere il codice.
La ricerca binaria iterativa e la ricerca binaria ricorsiva, tuttavia, avevano la stessa quantità di confronti. Ad esempio:
sequentialSearch(): 'some_word' found in ArrayList at index 13,020 - comparisons: 13,021
I confronti sono il numero di volte in cui il computer ha effettivamente verificato se "some_word" dell'utente era uguale a un valore ArrayList.
iterativeBinarySearch(): 'some_word' found in ArrayList at index 13,020 - comparisons: 14
recursiveBinarySearch(): 'some_word' found in ArrayList at index 13,020 - comparisons: 14
Quindi, se i confronti tra iterativo e ricorsivo sono gli stessi, in quali situazioni sceglieresti l'uno rispetto all'altro? È semplicemente un gusto personale o esiste un ragionamento specifico per l'utilizzo di uno specifico?