Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] funzione hash e tavola hash

    salve,
    ho trovato la seguente funzione hash nota come djb2:

    unsigned long hash(unsigned char *str)
    {
    unsigned long hash = 5381;
    int c;

    while (c = *str++)
    hash = ((hash << 5) + hash) + c; /* hash * 33 + c */

    return hash;
    }

    mi sapreste dire quanti valori può ritornare? non so come dimensionare la relativa tavola
    grazie in anticipo
    marco

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C] funzione hash e tavola hash

    Originariamente inviato da jurigagarin
    mi sapreste dire quanti valori può ritornare? non so come dimensionare la relativa tavola
    Il numero di "bucket" in una hash table non dipende dalla funzione di hash o dal range dei valori forniti da questa funzione!!

    http://en.wikipedia.org/wiki/Hash_table
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    definisci una dimensione massima della tua tabella di hash HASHSIZE

    e calcoli il tuo valore di ash come
    ashvalue % HASHSIZE;

    puoi anche farlo direttamente nella tua funzione
    codice:
    unsigned long hash(unsigned char *str)
    {
    unsigned long hash = 5381;
    int c;
    
    while (c = *str++)
    hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
    
    return hash % HASHSIZE;
    }
    devi poi gestirti le collisioni.

    ciao
    sergio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.