मैं समय की जटिलता (बिग-ओ) कार्यों को खोजने और उचित कारण प्रदान करने का प्रयास करने की कोशिश कर रहा हूं।फ़ंक्शन की समय जटिलता
पहले समारोह जाता है:
r = 0
# Assignment is constant time. Executed once. O(1)
for i in range(n):
for j in range(i+1,n):
for k in range(i,j):
r += 1
# Assignment and access are O(1). Executed n^3
इस तरह।
मुझे लगता है कि यह ट्रिपल नेस्टेड लूप है, इसलिए यह ओ (एन^3) होना चाहिए। लेकिन मुझे लगता है कि यहां मेरा तर्क बहुत कमजोर है। मैं वास्तव में नहीं मिलता है क्या यहाँ
दूसरा समारोह ट्रिपल नेस्टेड लूप के अंदर चल रहा है है:
i = n
# Assignment is constant time. Executed once. O(1)
while i>0:
k = 2 + 2
i = i // 2
# i is reduced by the equation above per iteration.
# so the assignment and access which are O(1) is executed
# log n times ??
मैं इस एल्गोरिथ्म पता चला हे होने के लिए (1)। लेकिन पहले फंक्शन की तरह, मुझे नहीं लगता कि समय-लूप में क्या चल रहा है।
क्या कोई फ़ंक्शंस की समय जटिलता के बारे में अच्छी तरह से समझा सकता है? धन्यवाद!
नेस्टेड लूप लगभग हमेशा वर्गबद्ध होते हैं जब तक आप कुछ निरंतर काम नहीं कर रहे हैं, आपका दूसरा उदाहरण 'लॉग (एन)' है। –
धन्यवाद। दूसरे उदाहरण के लिए, क्या हम i = n भाग को अनदेखा कर रहे हैं? – zakels
i = n केवल एक असाइनमेंट है, उसके बाद हम प्रत्येक पुनरावृत्ति को रोक रहे हैं जैसे कि आप बायसेक्शन खोज –