मेरा मानना है कि मैं कुछ ऐसी चीज़ों के साथ आया हूं जो आम तौर पर और कुशलता से काम करना चाहिए यदि आपको डुप्लिकेट न होने की गारंटी दी जाती है * (हालांकि, यह किसी भी संख्या में छेद और पूर्णांक की किसी भी सीमा तक होना चाहिए)।
इस पद्धति के पीछे का विचार क्विकर की तरह है, जिसमें हम एक धुरी और उसके चारों ओर विभाजन को ढूंढते हैं, फिर एक छेद के साथ पक्ष (ओं) पर पुनरावृत्ति करते हैं। यह देखने के लिए कि किन पक्षों में छेद है, हम सबसे कम और उच्चतम संख्या पाते हैं, और उनकी तुलना उस तरफ की धुरी और मूल्यों से करते हैं। कहते हैं कि धुरी 17 है और न्यूनतम संख्या 11. है। यदि कोई छेद नहीं है, तो 6 संख्याएं (11, 12, 13, 14, 15, 16, 17) होनी चाहिए। यदि 5 हैं, तो हम जानते हैं कि उस तरफ एक छेद है और हम इसे खोजने के लिए उस तरफ बस फिर से उठ सकते हैं। मुझे इससे अधिक स्पष्ट रूप से समझाने में परेशानी हो रही है, तो चलिए एक उदाहरण लेते हैं।
15 21 10 13 18 16 22 23 24 20 17 11 25 12 14
धुरी:
10 13 11 12 14 |15| 21 18 16 22 23 24 20 17 25
15 धुरी है, जिसे पाइपों द्वारा दर्शाया गया है ( ||
)। धुरी के बाईं ओर 5 नंबर हैं, जैसे कि (15 - 10) होना चाहिए, और दाईं ओर 9, जहां 10 (25 - 15) होना चाहिए। इसलिए हम दाईं ओर पुनरावृत्ति करते हैं; हम ध्यान देंगे कि पिछली बाउंड 15 थी यदि छेद इसके साथ (16) है।
[15] 18 16 17 20 |21| 22 23 24 25
अब बाईं ओर 4 नंबर हैं लेकिन 5 (21 - 16) होना चाहिए। इसलिए हम वहां फिर से आते हैं, और फिर से हम पिछले बाउंड (कोष्ठक में) पर ध्यान देंगे।
[15] 16 17 |18| 20 [21]
बाईं ओर की दाईं ओर 2 संख्याएं (18 - 16) हैं, लेकिन दाईं ओर 2 (20 - 18) के बजाय 1 है। हमारी समाप्ति स्थितियों के आधार पर, हम 1 नंबर की तुलना दोनों पक्षों (18, 20) से कर सकते हैं और देख सकते हैं कि 19 गायब है या एक बार फिर से जीवित हो सकता है:
[18] |20| [21]
बाईं ओर का आकार शून्य है, जिसमें धुरी (20) और पिछली बाउंड (18) के बीच का अंतर है, इसलिए 19 छेद है।
*: यदि डुप्लिकेट हैं, तो आप संभवतः ओ (एन) समय में उन्हें हटाने के लिए एक हैश सेट का उपयोग कर सकते हैं, समग्र विधि ओ (एन) को रखते हुए, लेकिन हो सकता है कि किसी अन्य विधि का उपयोग करने से अधिक समय लगे।