Mi a különbség a tömb és a hash tábla között programozási nyelven?


Válasz 1:

A hasáb táblák tömböket használnak. A tömböknek fontos tulajdonsága a hashizálásnak: Bármely elemhez állandó időben hozzáférhet, ha ismeri annak indexét.

Használjon tömböket vödrökhöz. Tegyük fel, hogy azt akarta, hogy számoljon be egy szöveges betűből hány betűt, ha valami hasonlót tervez. Egy 26 tömböt tartalmazó tömböt készít (az egyszerű, ékezet nélküli római ábécé számára). Amikor betűt lát, kiszámítja az indexet, és a tömbben erre a bejegyzésre lép.

A hasítótáblák ezt tetszőlegesen hosszú kulcsokra kiterjesztik. Kiszámítja a kulcs kivonatát és megy ehhez az indexhez. A probléma az, ha több kulcsnak azonos hash-ja van. Különféle módon lehet kezelni ezt, amelyek közül néhány legyőzi a hash célját (de könnyen megvalósítható). Néhányan közülük nem tartják fenn, és legalább átlagosan fenntartják az állandó időbeli tulajdonságot.

A legjobb, amit láttam, az add-the-hash rehash, amelynél, ha a memória évtizedek óta szolgált, a Gonnet és Munroe bizonyítottan átlagosan kicsit több, mint 4 hozzáféréssel rendelkezik 50% -os terhelési tényezővel, függetlenül a hash asztal. Ehhez azonban prímszámok használatát kell elvégezni, és ez bonyolultvá teszi a megvalósítást. Valahogy meg kell találnia a prímszámokat. Szerencsére a hash táblák nem annyira nagyok, hogy ez nevetséges legyen.