4Fermer6
GodzilLe 10/10/2007 à 12:31
Tiens la méthode de hashage de chaine de caractères que l'on retrouve chez A. V. AHO, R. SETHI, J. D. ULLMAN, du livre "Compiler, Principles, Techniques, and Tools" (et qui l'attribuent eux meme a P. J WEINBERGER) :
int hashpjw(const void *cle)
{
   const char *ptr = cle;
   int val = 0;

   while (*ptr != '\0')
   {
      int tmp;

      val = (val << 4) + (*ptr);

      if (tmp = (val & 0xF0000000))
      {
         val = val ^ (tmp >> 24);
         val = val ^ tmp;
      }

      ptr ++;
   }

   if ((val % PRIME_TBLSIZ) < 0)
   {
      return 0;
   }
   return val % PRIME_TBLTSIZ;
}


Alors a savoir que ce PRIME_TBLSIZ est la taille du tableau de hashage (cette fonction est a la base utilisé pour hasher du texte pour le mettre dans un tableau de hashage)

et cette fonction donne généralement de bon résultats