यहाँ विकिपीडिया प्रविष्टि है
यदि आप सरल पुनरावृत्त दृष्टिकोण को देखते हैं। आप अभी तक खोजे जा रहे तत्वों में से आधे को खत्म कर रहे हैं, जब तक कि आपको अपनी जरूरत का तत्व नहीं मिल जाता।
यहाँ हम सूत्र के साथ कैसे आए इसका स्पष्टीकरण दिया गया है।
शुरू में कहें कि आपके पास तत्वों की संख्या एन है और फिर आप पहले प्रयास के रूप में ⌋N / 2 a क्या कर रहे हैं। जहाँ N, कम बाउंड और अपर बाउंड का योग है। N का पहला समय मान (L + H) के बराबर होगा, जहां L पहली सूची (0) है और H उस सूची का अंतिम सूचकांक है जिसे आप खोज रहे हैं। यदि आप भाग्यशाली हैं, तो आप जिस तत्व को खोजने की कोशिश करेंगे, वह मध्य में होगा [उदा। आप सूची में 18 को खोज रहे हैं {16, 17, 18, 19, 20} तब आप ⌊ (0 + 4) / 2 0 = 2 की गणना करते हैं जहां 0 कम बाउंड है (सरणी के पहले तत्व का एल - इंडेक्स) और 4 उच्च बाउंड (सरणी के अंतिम तत्व का एच-इंडेक्स) है। उपरोक्त मामले में L = 0 और H = 4. अब 2 तत्व 18 का सूचकांक है जिसे आप खोज रहे हैं। बिंगो! आपने ढूंढ लिया।
यदि मामला एक अलग सरणी {15,16,17,18,19} था, लेकिन आप अभी भी 18 की खोज कर रहे थे, तो आप भाग्यशाली नहीं होंगे और आप पहले N / 2 (जो ⌊ (0 + 4) /) करेंगे 2 = 2 और उसके बाद तत्व 2 का एहसास करें कि इंडेक्स 2 में वह नंबर नहीं है जिसे आप खोज रहे हैं। अब आप जानते हैं कि आपको पुनरावृत्त तरीके से खोज करने के लिए अपने अगले प्रयास में कम से कम आधे सरणी की तलाश नहीं करनी है। खोज का प्रयास आधा किया जाता है। इसलिए मूल रूप से, आप उन तत्वों की आधी सूची नहीं खोजते हैं जिन्हें आपने पहले खोजा था, हर बार जब आप उस तत्व को खोजने की कोशिश करते हैं जिसे आप अपने पिछले प्रयास में नहीं खोज पाए थे।
तो सबसे खराब स्थिति होगी
[एन] / २ + [(एन / २)] / २ + (((एन / २) / २)] / २ .....
अर्थात:
एन / २ १ + एन / २ २ + एन / २ ३ + ..... + N / 2 x … ..
जब तक ... आपने खोज पूरी कर ली है, उस तत्व में जहां आप खोजने की कोशिश कर रहे हैं, सूची के अंत में है।
यह दर्शाता है कि सबसे खराब स्थिति तब होती है जब आप N / 2 x तक पहुँचते हैं जहाँ x ऐसा होता है कि 2 x = N
अन्य मामलों में N / 2 x जहां x ऐसा है कि 2 x <N x का न्यूनतम मान 1 हो सकता है, जो सबसे अच्छा मामला है।
अब चूंकि गणितीय रूप से सबसे खराब स्थिति तब है जब
2 x = N
=> लॉग 2 (2 x ) = लॉग 2 (N)
=> x * log 2 (2) = लॉग 2 (N)
=> x * 1 = लॉग का मान 2 (एन)
=> अधिक औपचारिक रूप से Nlog 2 (N) + 1 =