Differenza tra BST, hashing, cerca e mappa

voti
4

Ho letto alcuni blog e tutorial su tentativi, hashing, Mappa (stl) e BST. Sono molto confuso, in cui uno è meglio usare e dove. So che per fare tale differenza tra loro sono sciocchezze perché sono tutti a carico di attuazione. La prego dirmi più specifica e per favore non dimenticato di citare la complessità (peggiore, media, e migliore dei casi).

Grazie in anticipo...

È pubblicato 16/08/2011 alle 10:07
fonte dall'utente
In altre lingue...                            


1 risposte

voti
6

BST è Binary Search Tree. E 'utilizzato per un dizionario. BST non ha limiti sulla struttura, e quindi una ricerca / inserzione / delezione è O (n) nel caso peggiore.

Mappa [sulla STL] è anche un dizionario, ed è in realtà un albero rosso-nero [in stl]. si tratta di un particolare tipo di BST, che ha dei limiti sulle strutture, a causa di esso, peggiore di ricerca caso / inserimento / cancellazione è O (log n).

hashing tabella hash è un diverso tipo di dizionario, il vantaggio di una tabella di hash [con buone funzioni hash] è O (1) tempo medio per la ricerca / delete / insert. tuttavia, il caso peggiore è O (n), che avviene se troppo elementi scontrano e / o quando è necessario un rimaneggiamento [quando equilibrio del carico è troppo elevata, si allocano una matrice più grande, e rimaneggiamento tutti gli elementi sono].

Tentativi sono speciali per le stringhe. tutti i ops sono O (S) dove S è la lunghezza della stringa. è vantaggio sugli altri [quando si tratta con le stringhe] è che dovete leggere la stringa comunque, quindi la complessità se Map, per esempio, quando si tratta di stringhe, è in realtà O (S * n * logn).

quando usare?
un Map[o qualsiasi altro albero bilanciato] dovrebbe quasi sempre essere una scelta migliore quindi un normale BST.
hash tableè una buona scelta quando si vuole tempo medio breve, ma non importa che a volte si avrà la perdita di prestazioni a causa di rimaneggiamento, e in alcuni casi si possono verificare collisioni.
Triedi solito è un buon dizionario per le stringhe.

Risposto il 17/08/2011 a 08:54
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more