मुझे आश्चर्य है कि पाइथन (सीपीथन कणिका में) सूची वस्तुओं की पॉप विधि की समय जटिलता क्या है। List.pop (एन) के लिए एन का मान भी जटिलता को प्रभावित करता है?पायथन में सूची से पॉपिंग तत्वों की समय जटिलता क्या है?
उत्तर
Pop()
अंतिम तत्व के लिए ओ (1) होना चाहिए क्योंकि आपको केवल सरणी में अंतिम तत्व द्वारा संदर्भित तत्व को वापस करने और अंतिम तत्व की अनुक्रमणिका अद्यतन करने की आवश्यकता है। मैं उम्मीद करता हूं कि pop()
एक मनमानी तत्व के लिए ओ (एन) होना चाहिए और औसत एन/2 संचालन की आवश्यकता है क्योंकि आपको उस तत्व से परे किसी भी तत्व को स्थानांतरित करने की आवश्यकता होगी जिसे आप पॉइंटर्स की सरणी में एक स्थिति को हटा रहे हैं।
हाँ, यह हे (1) पिछले एक अजगर सूची के तत्व पॉप है, और हे (एन) एक मनमाना तत्व पॉप (के बाद से सूची के पूरे आराम के लिए स्थानांतरित कर दिया जाना है)। http://effbot.org/zone/python-list.htm
तो बस इसे स्पष्ट करने के लिए, list.pop (0) ओ (एन) और list.pop() ओ (1) है। –
और ओ (1) में दोनों परिचालनों को प्राप्त करने के लिए, संग्रह का उपयोग करें .deque देखें [यहां] (https://wiki.python.org/moin/TimeComplexity) – galath
संक्षिप्त उत्तर इधर देखो है:
यहाँ कैसे अजगर सूचियों संग्रहीत और छेड़छाड़ कर रहे हैं पर एक बड़ा लेख है https://wiki.python.org/moin/TimeComplexity
कोई तर्क के साथअपनी हे पॉप (1)
एक साथतर्क पॉप:
- औसत समय जटिलता हे (के) (के नंबर एक तर्क के रूप में पारित का प्रतिनिधित्व करता है पॉप के लिए
- परिशोधित सबसे खराब स्थिति समय जटिलता हे (के)
- सबसे खराब मामला समय जटिलता O (n)
औसत समय जटिलता:
किसी भी समय आप एक में डाल उस ऑपरेशन की समय जटिलता मानें ओ (एन - के) है।
उदाहरण के लिए, आप सूची के अंत से निकालने से 9 से मदों की एक सूची है, तो 9 संचालन और की शुरुआत से हटाने के सूची 1 परिचालन (0 सूचकांक को हटाने और अन्य सभी चलती है तत्वों को उनके वर्तमान सूचकांक में - 1)
चूंकि सूची के मध्य तत्व के लिए एन-के के संचालन औसत है ओ (के) को औसत छोटा किया जा सकता है।
इस बारे में सोचने का एक और तरीका यह है कि प्रत्येक इंडेक्स को आपकी 9 आइटम सूची से हटा दिया गया था। यह कुल 45 संचालन होगा। (9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 45)
45 ओ (एनके) के बराबर है और चूंकि पॉप ऑपरेशन ओ (एन) बार हुआ जब आप एनके को एनके से विभाजित करते हैं हे (के) प्राप्त करने के लिए
परिशोधित सबसे खराब मामला समय जटिलता
कल्पना कीजिए कि आप फिर से 9 मदों की एक सूची है।कल्पना करें कि आप सूची के हर आइटम को हटा रहे हैं और सबसे खराब मामला होता है और आप प्रत्येक बार सूची के पहले आइटम को हटा देते हैं।
के बाद से सूची 1 से 1.
9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 45 के माध्यम से हर बार की कुल संचालन की संख्या 9 से हर बार कम हो जाती है सिकुड़ता 45 बराबर ओ (एनके)। चूंकि आपने 9 ऑपरेशंस किए हैं और 9 एम (एन) को अमृतकृत सबसे खराब केस परिदृश्य की गणना करने के लिए ओ (एनके)/ओ (एन) है जो ओ (के)
औसत के लिए ओ (एन) बताता है और अमूर्त खराब स्थिति समय जटिलता भी सही प्रकार का है। ध्यान दें कि हे (के) लगभग हे है (1/2n) और निरंतर गिर रहा हे के बराबर होती है (एन)
सबसे खराब मामला समय जटिलता
- परिशोधित सबसे खराब स्थिति समय जटिलता के साथ विपरीत आप डेटा संरचना की स्थिति में कारक मत बनो और किसी भी व्यक्तिगत ऑपरेशन के लिए सबसे खराब मामले के बारे में सोचें।
- उस उदाहरण में, सबसे खराब मामला आपको सूची से पहले आइटम को निकालना है जो ओ (एन) समय है।
- 1. random.sample की समय जटिलता
- 2. पायथन सेट ऑपरेशंस की समय जटिलता?
- 3. OrderedDictionary की जटिलता क्या है?
- 4. ट्रीसेट पुनरावृत्ति की समय जटिलता क्या है?
- 5. std :: map में find() की समय जटिलता?
- 6. योजना में इस कार्य की समय जटिलता क्या है?
- 7. रूबी में ऐरे # यूनिक विधि की समय जटिलता क्या है?
- 8. क्लोजर में गिनती कार्य की समय जटिलता क्या है?
- 9. जावा में हैश मैप.containsKey() की समय जटिलता क्या है?
- 10. ट्रीसेट में आदेशित संचालन की समय जटिलता क्या है?
- 11. स्मृति आवंटन की समय जटिलता
- 12. हैश टेबल की समय जटिलता
- 13. जावा में सेट की समय जटिलता
- 14. नींद की तरह की जटिलता क्या है?
- 15. पायथन - सूचियों की सूची में तत्वों को छंटनी
- 16. सूची पायथन में तत्वों को छोड़ना
- 17. सी ++ में set_intersection की जटिलता क्या है?
- 18. समय जटिलता
- 19. समय जटिलता
- 20. समय जटिलता
- 21. पेड़ के ट्रैवर्सल की समय जटिलता क्या है?
- 22. समय जटिलता()
- 23. मैट्रिक्स अतिरिक्तता की जटिलता क्या है?
- 24. समय जटिलता()
- 25. गैलप खोज समय जटिलता?
- 26. क्या वेक्टर की जटिलता :: स्पष्ट अनिर्दिष्ट है?
- 27. डेटाबेस क्वेरी समय जटिलता
- 28. ContextMenu लंबे समय पर पॉपिंग नहीं कर रहा है
- 29. पायथन सूची की तुलना
- 30. सेट की जटिलता :: डालने
मैं दिए गए जवाब से सहमत हैं, लेकिन स्पष्टीकरण imho गलत है। आप किसी ऑब्जेक्ट को ओ (1) समय पर किसी सूची से हटा सकते हैं (अनिवार्य रूप से पिछली पॉइंटर पॉइंट को अगली बार बना दें, और इसे हटा दें) समस्या यह है कि उस स्थिति को ऑब्जेक्ट को ढूंढने के लिए, आपको उस सूची को पार करने की आवश्यकता है बिंदु (ओ (एन) समय लेता है, कोई औसत आवश्यक नहीं है।) अंत में एक विशेष मामला नोट :, पॉप (0) ओ (1) ले जाएगा, ओ (0) नहीं। – ntg
@ntg सूची पॉइंटर्स की एक सरणी है। बीच में सरणी से एक सूचक को हटाने के लिए, इसके बाद के सभी पॉइंटर्स को सरणी में स्थानांतरित किया जाना चाहिए, जो सूची के आकार के अनुपात में आनुपातिक समय लेते हैं (जिसे हम एन के रूप में दर्शाते हैं), इस प्रकार ओ (एन) । बिग-ओ नोटेशन में एन को स्पष्ट करने के लिए तत्व को वापस लौटाए जाने वाले तत्व की अनुक्रमणिका नहीं है, लेकिन ए (1) के साथ एल्गोरिदम के चलने वाले समय को एक फ़ंक्शन निरंतर समय - यानी, यह आकार के आकार पर निर्भर नहीं है सूचि। ओ (एन) का मतलब है कि बाध्यकारी कार्य सूची के आकार के कुछ स्थिर समय है, एफ (एन) = सी * एन + बी। – tvanfosson
मैं सही खड़ा हूं :) दरअसल, सूची कार्यान्वयन पॉइंटर्स की एक सरणी है। तो आपका जवाब सही है। आपके उत्तर में पॉप (एन) द्वारा आपका मतलब पॉप (के), एन है जहां के तत्व को निकालने के लिए तत्व की स्थिति है, और कहा गया सरणी का आकार एन है। फिर के 0 से एन -1 तक हो सकता है, इस प्रकार प्रति औसत एन/2 संचालन तत्वों को + 1, ...., एन-1 को पीछे की ओर ले जाने के लिए। – ntg