के माध्यम से पुनरावृत्ति के लिए बड़े-ओ नोटेशन क्या हैं, मैं सोच रहा था कि एनएसएससेट के माध्यम से पुनरावृत्ति के लिए बड़े-बड़े नोटेशन क्या हैं। एनएसएआरएआरई का उत्तर स्पष्ट रूप से ओ (एन) है - लेकिन एनएसएससेट के लिए जवाब क्या है? इसके अलावा - मुझे लगता है कि वही उत्तर NSDictionary के लिए लागू होगा?एनएसएससेट और एनएस डिक्शनरी
उत्तर
आप अपने ब्रिज कोर फाउंडेशन समकक्षों के शीर्षकों में टिप्पणियों को देखकर ऐप्पल के डेटा संरचनाओं की कम्प्यूटेशनल जटिलता का कुछ विचार प्राप्त कर सकते हैं (क्योंकि वे अनिवार्य रूप से हुड के नीचे एक ही कोड का उपयोग कर रहे हैं)।
दिलचस्प बात यह है CFArray
के समय जटिलता नहीं वास्तव में हे होने के लिए (एन) की गारंटी है:
कम्प्यूटेशनल जटिलता
सरणी में एक मूल्य के लिए उपयोग समय पर होने की गारंटी है किसी भी कार्यान्वयन, वर्तमान और भविष्य के लिए सबसे खराब ओ (एलजी एन), लेकिन अक्सर ओ (1) (निरंतर समय) होगा। रैखिक खोज संचालन समान रूप से में ओ (एन * एलजी एन) की सबसे खराब स्थिति जटिलता है, हालांकि आम तौर पर सीमाएं कठिन हो जाएंगी, और इसी तरह। सम्मिलन या हटाना संचालन आम तौर पर सरणी में मानों की संख्या में रैखिक होगा, लेकिन कुछ कार्यान्वयन में सबसे खराब मामले में ओ (एन * एलजी एन) स्पष्ट रूप से हो सकता है। प्रदर्शन के लिए सरणी के भीतर कोई पसंदीदा स्थिति नहीं है; , यह कम इंडेक्स वाले मानों तक पहुंचने के लिए आवश्यक नहीं है, या उच्च सूचकांक वाले मान डालने या हटाने या जो भी हो।
ये समय जटिलताओं का सुझाव है कि CFArray
(और इसलिए NSArray
) वास्तव में एक पेड़ के रूप में लागू किया जा सकता है (परीक्षणों से पता चलता है कि यह यहां तक कि कई अंतर्निहित डेटा संरचनाओं के बीच स्विच किया जा सकता है)।
CFDictionary
के लिए इसी तरह
, सीमा दी काफी एक व्यापक रेंज है:
कम्प्यूटेशनल जटिलता
शब्दकोश में एक मूल्य के लिए उपयोग समय के लिए सबसे खराब हे (एन) में होने की गारंटी है कोई कार्यान्वयन, वर्तमान और भविष्य, लेकिन अक्सर ओ (1) (निरंतर समय) होगा। सम्मिलन या हटाना संचालन आमतौर पर स्थिर समय भी रहेगा, लेकिन कुछ कार्यान्वयन में सबसे खराब मामले में ओ (एन * एन) हैं। किसी कुंजी के माध्यम से मानों तक पहुंच सीधे मानों तक पहुंचने से तेज है (यदि ऐसे संचालन हैं)। शब्दकोशों की संख्या समान संख्या के साथ सरणी की तुलना में में अधिक स्मृति का उपयोग करने में लगेगी।
मैं CFSet
के लिए कोर फाउंडेशन हेडर में एक समान टिप्पणी ढूँढने में सक्षम नहीं था, लेकिन स्रोत कोड के निरीक्षण से पता चलता है कि यह CFBasicHash
है, जो एक हैश तालिका है पर आधारित है, इसलिए समय जटिलता के रूप में विशिष्ट होगा एक हैश टेबल के लिए - ओ (1) सम्मिलन, हटाने और परीक्षण आम तौर पर, और ओ (एन) सबसे खराब मामले में।
यदि आप वास्तव में यह पता लगाने में रुचि रखते हैं कि ये डेटा संरचनाएं कैसे काम करती हैं, कोर फाउंडेशन ओपन सोर्स है, तो आप Apple's website पर स्रोत कोड पढ़ सकते हैं।
- 1. एनएस डिक्शनरी
- 2. एनएस डिक्शनरी
- 3. एनएस डिक्शनरी
- 4. एनएस डिक्शनरी और कोर डेटा
- 5. एनएस डिक्शनरी (एआरसी)
- 6. एनएस डिक्शनरी को
- 7. एनएस डिक्शनरी (आईफोन एसडीके)
- 8. एनएस डिक्शनरी एक्सएमएल
- 9. एनएस डिक्शनरी शून्य मूल्य
- 10. एक एनएस डिक्शनरी
- 11. एनएस डिक्शनरी में एनएसएआरएआरई कैसे स्टोर करें?
- 12. क्या एनएस डिक्शनरी में चाबियाँ और मान हैं?
- 13. ऑर्डरर्ड डिक्शनरी और डिक्शनरी
- 14. एनएससीओडर बनाम एनएस डिक्शनरी, आप कब उपयोग करते हैं?
- 15. एनएस डिक्शनरी को स्विफ्ट शब्दकोश में कनवर्ट करें
- 16. एनएस डिक्शनरी कुंजी के रूप में int का उपयोग करना?
- 17. एक एनएसएमयूटेबलएरे के साथ फास्ट एन्युमरेशन जिसमें एनएस डिक्शनरी
- 18. सी # में एनएस डिक्शनरी के बराबर क्या है?
- 19. एनएस डिक्शनरी में संबंधित मूल्य से कुंजी कैसे प्राप्त करें?
- 20. ऑर्डर्ड डिक्शनरी, लिस्ट डिक्शनरी और हाइब्रिड डिक्शनरी
- 21. डिक्शनरी और हैशटेबल
- 22. एनएस सर्विसबस
- 23. क्या एनएस डिक्शनरी ऑब्जेक्टफोरकी: पहचान या समानता पर भरोसा करता है?
- 24. एनएस डिक्शनरी में 10 एमबी जेएसओएन प्रतिक्रिया को बदलने का सबसे प्रभावी तरीका क्या है?
- 25. यदि एनएस डिक्शनरी मूल्यों के लिए अच्छा है, तो ट्रिपल वैल्यू के लिए क्या अच्छा है?
- 26. एनएस डिक्शनरी के साथ, क्या आप डेटा के प्रकार का निर्धारण कर सकते हैं?
- 27. आईओएस में एनएस डिक्शनरी को जेएसएस प्रारूप में सही तरीके से कैसे परिवर्तित करें?
- 28. मैं आईओएस पर एनएस डिक्शनरी के रूप में डिस्क से प्लिस्ट फ़ाइल कैसे लोड करूं?
- 29. एनएसएमयूटेबल डिक्शनरी और हटाने केवीओ
- 30. विचित्र एनएसएससेट क्रैश की प्रतिलिपि
यदि आप प्रदर्शन की परवाह करते हैं, तो सुनिश्चित करें कि आप "तेज़ गणना" या ब्लॉक का उपयोग करें। नियमित सी 'के लिए 'या' जबकि 'लूप का उपयोग न करें। https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Collections/Articles/Enumerators.html –
यह प्रश्न वास्तविक प्रश्न – YogevSitton
से एक जिज्ञासा विषय से अधिक है। खैर, तो उत्तर सेट में क्या है इस पर निर्भर करता है। एनएसएससेट एक साधारण वर्ग नहीं है, अगर कार्यान्वयन हजारों हजारों कोड कोड है तो मुझे आश्चर्य नहीं होगा। शुरुआत के लिए, "एनएसएसएटी" नामक एक असली कक्षा भी नहीं है। यह सिर्फ एक नाम है जो सेट में जाने वाले सभी वास्तविक वर्गों में शामिल होने के लिए उपयोग किया जाता है, वास्तव में कौन सी कक्षा का उपयोग किया जाता है, सेट की सामग्री और सेट को एक्सेस करने के लिए आपके कोड का उपयोग करने वाले पैटर्न के आधार पर बदल जाएगा। आम तौर पर, 5 आइटम वाले सेट में 5 बिलियन आइटम वाले सेट के लिए काफी अलग प्रदर्शन विशेषताएं होंगी। और हाँ, यह उस डेटा को संभाल सकता है। –