sqrt(n)
पॉइंटर्स की एक सरणी के रूप में n
आकार की एक सरणी लागू करें।इस सरणी डेटा संरचना का नाम क्या है?
i
पर कोई आइटम डालने के लिए, i/sqrt(n)
पर पॉइंटर पर जाएं। यदि वह सूचक null
है, तो इसे sqrt(n)
आकार की एक नई सरणी में असाइन करें। स्थिति i mod sqrt(n)
पर अपने आइटम को नई सरणी में डालें।
लाभ सरल है: यह आपको एक बड़ी सरणी बनाने की अनुमति देता है जो प्रारंभ में केवल O(sqrt(n))
स्थान लेता है। आप निरंतर समय में किसी भी तत्व तक पहुंच सकते हैं, और यह आपको सभी n
पदों के लिए स्थान आवंटित किए बिना सरणी के भाग भरने की अनुमति देता है।
यह पहले से ही हैश-टेबल के लिए उपयोग किया जा सकता है, और मेरे पास एक और अनुप्रयोग है। मेरा सवाल है: क्या इसके लिए कोई नाम है? कोई भी सामान्य कार्यान्वयन मैं उपयोग कर सकता हूँ?
उन लोगों के लिए जो कार्यान्वयन की तलाश में हैं, Google टेबल आकार के आनुपातिक बाल्टी के बजाय निरंतर आकार वाली बाल्टी का उपयोग करते हुए, लगभग एक स्पैस तालिका कहलाता है। http://google-sparsehash.googlecode.com/svn/trunk/doc/implementation.html –