2017-07-16 1 views
1

J'ai une table de hachage avec 11 godets. Et décider entre le hashfunktionHashtable Collision Handling

h(k)= k mod 6 or h(k)= k mod 10

Laquelle est la meilleure solution? Je pense que c'est h(k)= k mod 10 car avec h(k)= k mod 6 il peut pointer 2 ou 3 clés dans le même compartiment.

Et je pensais que lorsque vous avez h(k)= k mod 10 le minimum des seaux doivent être 10.

grâce à l'aide.

+0

Vous devez utiliser quelque chose qui peut renvoyer 11 valeurs différentes, telles que 'k mod 11'. – interjay

+0

cela signifie que quand j'ai une taille de tableau de 11 valeurs, et il y a le choix entre mod 7 et mod 13, je prends le mod 13, non? @interjay – flowers1234

+1

Non, vous prenez le mod 11. Prendre mod 7 ou mod 13 serait idiot. Le mod 7 laisserait des seaux vides, et le mod 13 devrait être suivi du mod 11 pour donner un seau valide. – interjay

Répondre

2

Si vous devez choisir entre ces deux fonctions, 10 victoires mod, car il laisse un seul seau utilisé, par opposition à cinq seaux qui seraient inutilisés si vous allez avec mod 6.

Idéalement, bien que , vous devriez utiliser mid 11 pour une table de hachage à onze seaux, car elle répartit les codes de hachage parmi tous les seaux disponibles.

+0

thx @dasblinkenlight. Désolé pour les nombreuses questions. Cela signifie, tout ce qui est plus petit que 11 serait taille de l'espace? – flowers1234

+1

@ flowers1234 Pas tellement d'espace, mais cela gaspillerait un godet, ce qui entraînerait une charge par godet plus élevée pour les godets restants, davantage de collisions et une performance inférieure. – dasblinkenlight

+0

thx !!! J'ai une autre question concernant ce thème, mais je pense que ce serait une nouvelle question, pour calculer le temps de recherche moyen sur une recherche réussie:/il y avait quelque chose comme 'α = n/m?' (Ne sais pas n et m signifie: D) – flowers1234