पूर्वोक्त दृष्टिकोण की आवश्यकता है कि प्रत्येक सेल एक बड़ी संख्या को धारण करने में सक्षम हो सकता है, जिस समय सरणी को पुन: व्यवस्थित करने की आवश्यकता हो सकती है, जो कि एक पर्याप्त स्थान जुर्माना है। यदि कोई स्लॉट कम से कम एक मान रखने में सक्षम है, जो कभी वैध रूप से नहीं लिखा जाएगा, तो कोई O(Wlg(N))
समय जुर्माना जोड़ने की कीमत पर किसी भी अन्य (गैर-स्थिर) अंतरिक्ष दंड से बच सकता है , जहां विभिन्न सरणी स्लॉट्स के बीच W
की संख्या लिखी गई है समाशोधन संचालन और सरणी का आकार है। उदाहरण के लिए, मान लीजिए कि एक पूर्णांक -2,147,483,647 से 2,147,483,647 (लेकिन कभी -2,147,483,648) नहीं होगा और कोई रिक्त सरणी आइटम को शून्य पर पढ़ना चाहता है। सरणी को -2,147,483,648 (उस मूल्य पर कॉल करें) से भरना शुरू करेंN
B
)। आवेदन के लिए एक सरणी स्लॉट पढ़ते समय, B
शून्य के मान की रिपोर्ट करें । सरणी स्लॉट लिखने से पहले I
, जाँच करें कि क्या यह निर्णय किया B
और अगर ऐसा है और I
एक से अधिक, स्लॉट के लिए एक शून्य की दुकान है I/4
(, और अगर यह मानते थे कि स्थान के लिए एक समान की जांच करने के बाद B
, I/16
, आदि)।
सरणी को खाली करने के लिए, I
0 या 1 के बराबर से शुरू करें, सरणी आधार पर निर्भर करता है (जैसा कि वर्णित एल्गोरिथ्म या तो काम करेगा)। फिर निम्न प्रक्रिया को दोहराएं: यदि आइटम I
है B
, वेतन वृद्धि I
और, यदि ऐसा करने से चार में से कई का उत्पादन होता है, तो चार से विभाजित करें (समाप्त करें यदि विभाजित 1 का मूल्य देता है); यदि आइटम I
नहीं है B
, तो B
वहां स्टोर करें और I
चार से गुणा करें (यदि I
शून्य से शुरू होता है, तो चार से गुणा करने से यह शून्य हो जाएगा, लेकिन चूंकि आइटम 0 रिक्त I
होगा , वेतन वृद्धि होगी)।
ध्यान दें कि एक दूसरे की संख्या के साथ निरंतर "चार" को बदल सकता है, बड़े मूल्यों के साथ आम तौर पर कम काम टैगिंग की आवश्यकता होती है, लेकिन छोटे मूल्यों में आमतौर पर कम काम समाशोधन की आवश्यकता होती है; चूंकि टैग स्लॉट्स जिन्हें टैग किया गया है, उन्हें साफ करना होगा, तीन या चार का मूल्य लगभग निश्चित रूप से इष्टतम है; चूंकि मूल्य चार निश्चित रूप से इष्टतम के करीब है, दो या आठ से बेहतर है, और किसी भी अन्य संख्या की तुलना में अधिक सुविधाजनक है, यह सबसे उचित विकल्प प्रतीत होगा।