मुझे ओ (एन) के साथ पता है, आपके पास आमतौर पर एक ही लूप है; ओ (एन ^ 2) एक डबल लूप है; O (n ^ 3) एक ट्रिपल लूप है, आदि O (लॉग एन) के बारे में कैसे?
आप वास्तव में इसके बारे में गलत तरीके से यहां जा रहे हैं। आप यह याद रखने की कोशिश कर रहे हैं कि किसी दिए गए एल्गोरिथम संरचना के साथ कौन सी बिग-ओ अभिव्यक्ति जाती है, लेकिन आपको वास्तव में केवल उन ऑपरेशनों की संख्या की गणना करनी चाहिए जो एल्गोरिथ्म की आवश्यकता है और इनपुट के आकार की तुलना करते हैं। एक एल्गोरिथ्म जो अपने पूरे इनपुट पर लूप करता है, उसमें O (n) प्रदर्शन होता है क्योंकि यह लूप n बार चलाता है, इसलिए नहीं कि इसमें एक लूप है। यहाँ O (लॉग एन) प्रदर्शन के साथ एक एकल लूप है:
for (i = 0; i < log2(input.count); i++) {
doSomething(...);
}
तो, किसी भी एल्गोरिथ्म जहां इनपुट के आकार के लघुगणक के आदेश पर आवश्यक संचालन की संख्या ओ (लॉग एन) है। महत्वपूर्ण बात यह है कि बिग-ओ विश्लेषण आपको बताता है कि एल्गोरिथ्म का निष्पादन समय इनपुट के आकार के सापेक्ष कैसे बदलता है: यदि आप इनपुट के आकार को दोगुना करते हैं, तो क्या एल्गोरिथ्म 1 और कदम उठाता है (ओ (लॉग एन)) , दो बार के रूप में कई चरणों (O (n)), चार चरणों के रूप में कई बार (O (n ^ 2)), आदि।
क्या यह अनुभव से जानने में मदद करता है कि एल्गोरिदम जो अपने इनपुट को बार-बार विभाजित करते हैं, उनके प्रदर्शन के घटक के रूप में 'लॉग एन' होता है? ज़रूर। लेकिन विभाजन के लिए मत देखो और इस निष्कर्ष पर कूदो कि एल्गोरिथ्म का प्रदर्शन ओ (लॉग एन) है - यह ओ (एन लॉग एन) जैसा कुछ हो सकता है, जो काफी अलग है।