Interpolation search: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Aggiunto una gif dell'algoritmo e la relativa didascalia nel template "Algoritmo" |
Migliorato la pagina |
||
(Una versione intermedia di un altro utente non mostrate) | |||
Riga 4:
|didascalia =Ricerca del numero 24 grazie all'algoritmo
|struttura dati = [[Array]] ordinato
|tempo = <math>O(n)</math>
|tempo migliore = <math>O(1)</math>
|tempo medio = <math>log(log(
|spazio =
|ottimale =
}}
L{{'}}'''interpolation search''' è un [[algoritmo di ricerca]] di un dato valore chiave in un [[array]] ordinato tramite gli stessi valori delle chiavi. È il metodo corrispondente alla ricerca di un particolare termine all'interno di un [[dizionario]] o di un nominativo all'interno di un [[elenco telefonico]].
L'interpolation search può essere considerato come una generalizzazione della [[ricerca dicotomica]]; quest'ultima, infatti, segue lo stesso procedimento, ma non si basa sui valori degli estremi, bensì taglia il ''search space'' sempre a metà.
In media, il costo dell'algoritmo è di <math>log(log(
== Esempio di implementazione ==
Il seguente codice [[C++]] è un esempio di semplice implementazione.
<syntaxhighlight lang="cpp" line="1">
template <typename T>
int interpolation_search(T arr[], int size, T key)
Riga 53:
== Voci correlate ==
* [[Ricerca sequenziale]]
* [[Ricerca dicotomica]]
* [[Hash table]]
== Collegamenti esterni ==
* {{cita web|http://www.dcc.uchile.cl/~rbaeza/handbook/algs/3/322.srch.p.html|Interpolation search|lingua=en}}
* {{cita web|http://www.nist.gov/dads/HTML/interpolationSearch.html|National Institute of Standards and Technology|lingua=en}}
* {{cita web|http://www.cs.technion.ac.il/~itai/publications/Algorithms/p550-perl.pdf|Interpolation Search - A Log LogN Search|lingua=en}}
{{
[[Categoria:Algoritmi di ricerca]]
|