मैं एक हैश तालिका बनाना चाहता हूं जो कि 1 से 15 बाइट्स तक के बाइट्स के अनुक्रम (स्ट्रिंग्स) में कुंजियों को देखता है।हैश टेबल/हैश फ़ंक्शन का निर्माण
मैं एक पूर्णांक मान स्टोर करना चाहता हूं, इसलिए मुझे लगता है कि हैशिंग के लिए एक सरणी पर्याप्त होगी। मुझे हैश फ़ंक्शन का निर्माण करने के बारे में अवधारणा में कठिनाई हो रही है, जिससे कुंजी को सरणी में एक इंडेक्स दिया जाएगा।
किसी भी सहायता को बहुत अधिक सराहना की जाएगी।
हैश में प्रविष्टियों की अधिकतम संख्या है: 4081 * 15 + 4081 * 14 + ... 4081 = 4081 ((15 * (16))/2) = 489720.
उदाहरण के लिएतो:
int table[489720];
int lookup(unsigned char *key)
{
int index = hash(key);
return table[index];
}
हैश फ़ंक्शन के लिए कुछ अच्छे विकल्प क्या हैं, या मैं एक बनाने के बारे में कैसे जाऊं?
धन्यवाद।
यदि दो कुंजी एक ही अनुक्रमणिका में मानचित्र हैं, तो आपके पास टक्कर है, जो आपके उदाहरण में सही ढंग से संभाला नहीं गया है। क्या आपने अपना उदाहरण केवल अपने हैशिंग को चित्रित करने के लिए रखा है, या क्या आपको वास्तव में हैशिंग टेबल के बारे में अतिरिक्त स्पष्टीकरण की आवश्यकता है? (खुली हैशिंग, बंद हैशिंग, ...) – Patrick