Rozdíl mezi BST, zatřiďování, se snaží a mapy

hlasů
4

Četl jsem nějaké blog a návod na to pokusí, zatřiďování Map (STL) a BST. Jsem velmi zmatený, ve kterém z nich je lepší použít a kde. Vím, že se na takovou rozdíl mezi nimi je nesmysl, protože jsou všechny závislé na implementaci. Mohl byste mi prosím konkrétnější a neposílejte zapomněl zmínit složitost (nejhorší, avg, a nejlepší případ).

Díky předem...

Položena 16/08/2011 v 10:07
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
6

BST je binární vyhledávací strom. Používá se pro slovníku. BST nemá žádné omezení na konstrukci, a tím i hledání / inzerce / delece je O (n) nejhorší případ.

Mapa [on STL] je také slovník, a je vlastně červeno-černý strom [on STL]. jedná se o speciální druh BST, který má omezení struktur, protože to nejhorší případ vyhledávání / insert / odstranění je O (logn).

hash tabulky hash je jiný typ slovníku, výhodou hash tabulce [s dobrými hašovací funkce] je O (1) průměrná doba pro vyhledávání / vymazání / vložky. Nicméně, v nejhorším případě je O (n), což se děje v případě, příliš mnoho prvků srazí a / nebo když je potřeba omílání [při vyrovnávání zátěže je příliš vysoká, jsme přidělit větší pole, a předělávka všechny prvky, je].

Pokusů jsou speciální pro smyčce. Všechny ops jsou O (S), kde S je délka Řetězec má. to je výhoda na ostatní [při jednání s řetězci], je potřeba v každém případě přečíst řetězec, takže složitost-li Mapnapříklad při jednání s řetězci, je ve skutečnosti O (S * n * logn).

kdy je třeba použít? [nebo jakýkoli jiný vyvážený strom], by mělo být téměř vždy lepší volbou pak pravidelně . je to dobrá volba, pokud chcete průměrnou krátkou dobu, ale nezajímá, že někdy budete mít ztrátu výkonu v důsledku předělávka, a v některých případech může dojít ke kolizím. je obvykle dobrý slovník pro smyčce.
MapBST
hash table
Trie

Odpovězeno 17/08/2011 v 08:54
zdroj uživatelem

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