Prelucrarea coliziunilor în buclă - depășirea stivei în limba rusă

Pentru a calcula indexul, utilizați un hash, în caz de coliziune, faceți un hash de la hash; că nu există bucle, păstrează valoarea hash de hash la un alt tabel hash (sau verificați dacă există deja acest hash de hash tabel hash), pentru a face acest lucru, mai întâi calcula un hash al unui hash hash în caz de conflict trebuie să calculeze nu numai ESH de hash de hash și hash hash hash a hash - yapycoder 18 aprilie '11 la 17:05







Sincer nu mi-a păsat ultimele cuvinte. Ei bine, bine. Voi încerca să înțeleg și să aplic. - Ray 19 aprilie '11 la 13:23

Și eu, sincer, nu am înțeles dacă OP înțelegea gluma :) - yapycoder Apr 19 '11 la 13:29

Cu algoritmul corect, looping-ul nu poate fi!

Pentru a reduce lungimea lanțurilor de coliziuni, este necesar să se facă astfel încât dimensiunea mesei și pasul de-a lungul ei să fie numere primare. De obicei, se face un tabel a cărui dimensiune este un număr prime, iar pasul este luat ca un hash din hash.







răspuns primit 20 aprilie '11 la 20:43

Ciclul poate fi bifat din mai multe motive:

1) Întregul tabel este plin cu chei. Apare atunci când factorul de ocupare a mesei este 1. Această problemă este rezolvată dacă faceți o re-amestecare. Pentru fiecare cheie de pe masă, aplicați din nou hașcarea și trimiteți-o la al doilea tabel, a cărui mărime este mai mare. Cod exemplu:

2) Eroare în funcția hash. Punctul este acela că parametrul returnat al celei de-a doua funcții hash trebuie să fie simplu unul față de cel al tabelului. De exemplu, dacă dimensiunea tabelului este de 2, atunci este un număr impar. Și dacă mărimea mesei este un număr prime, atunci orice funcție hash va face.

3) Starea incorectă în buclă. Este necesar să se analizeze condițiile de oprire a ciclului. Principalul lucru este că numărul de iterații nu ar trebui să fie mai mare decât dimensiunea tabelului.

răspunsul este 11 noiembrie 15 la 22:35

Pentru a urmări buclele, trebuie să opriți o structură suplimentară. Du-te în altă direcție. Există o opțiune dacă coliziunile sunt posibile, nu se asigură stocarea valorilor separate prin hash, ci o listă de valori, cu o potrivire hash. De exemplu, puteți sorta lista

răspunsul dat 18 aprilie '11 la 17:26







Articole similare

Trimiteți-le prietenilor: