मैं यह समझने में सक्षम नहीं हूं कि सी पर डीजेबी 3 हैशिंग फ़ंक्शन कैसे लिखना है।

मैंने इंटरनेट की खोज की लेकिन मैंने पाया कि यह सी ++ में हो सकता है ...

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;
    }

और अगर आप मुझे यह समझा सकते हैं तो मैं वास्तव में आभारी रहूंगा ...

0
SAM4RTH 5 नवम्बर 2020, 17:49

1 उत्तर

सबसे बढ़िया उत्तर

सी प्रोग्रामिंग भाषा में djb2 हैशिंग फ़ंक्शन के लिए कोड यहां दिया गया है!

unsigned int hash(const char *word)
{
    unsigned int hash = 5381;
    int c;

    while ((c = *word++))        // *str++ is going to the next address in memory, where the next char in the string is stored
    {
        if (isupper(c))
        {
            c = c + 32;
        }

        hash = ((hash << 5) + hash) + c; // hash * 33 + c   // hash << 5 = hash * 2^5
    }

    return hash % N;
}

मेरी शंकाओं का समाधान करने के लिए @500-InternalServerError को धन्यवाद।

0
SAM4RTH 5 नवम्बर 2020, 15:35