क्या Collections.sort(list)
जांचता है कि list
पहले ही सॉर्ट किया गया है या यह शायद किसी अन्य कारण से ओ (1) है?
या, क्या सॉर्ट किए गए को सॉर्ट करने का अच्छा विचार है और इसे पर कॉल करने पर सूची में तत्व जोड़ने पर true
/false
पर सेट करें?जावा - एक ओ (1) ऑपरेशन पहले से क्रमबद्ध सूची पर सॉर्ट() को कॉल कर रहा है?
उत्तर
आप कैसे निर्धारित कर सकते हैं कि कोई सूची इसे देखे बिना क्रमबद्ध है? यह O(1)
नहीं होगा। यह निर्धारित करना कि कोई सूची क्रमबद्ध है, कम से कम O(n)
लेता है।
इसका मतलब यह होगा कि Collections.sort
यह जांचने के लिए परेशान था कि प्रत्येक सॉर्टिंग ऑपरेशन पहले O(n) + O(n log n)
का औसत लेगा या नहीं।
ओ (1) का कोई तरीका नहीं है, आप यह जांच नहीं सकते कि संग्रह ओ (एन) से तेज क्रमबद्ध है या नहीं। झंडा होना ठीक होना चाहिए, लेकिन यह सुनिश्चित करने के लिए कि आप वास्तव में क्या कर रहे हैं, निश्चित रूप से कहना मुश्किल है।
आम तौर पर, पहले से क्रमबद्ध सूची को सॉर्ट करने से यह तेज़ नहीं होता है (बबल प्रकार जैसे सरल प्रकार को छोड़कर) कुछ मामलों में पूर्व-क्रमबद्ध धीमा होता है।
संग्रह .sort() के मामले में, क्रमबद्ध सूची को सॉर्ट करने के लिए कोई तेज़ नहीं है।
वास्तव में पूरी तरह से सच नहीं है। iirc जावा कुछ Java7 और Timsort के साथ शुरू बातों के लिए Timsort उपयोग कर रहा है आंशिक रूप से क्रमबद्ध सूची, यानी सैद्धांतिक 'हे की तुलना में बेहतर छँटाई में काफी अच्छा है (एन एन लॉग इन करें)' – Voo
+1 के लिए पूर्व हल कर कुछ मामलों में धीमी –
जावा 7 के साथ तथ्य के मामले में, जावा ने कुछ क्रमबद्ध कार्यों के लिए विलय से TimSort (पायथन देव टिम पीटर्स के नाम पर इसे लागू किया है) के नाम पर स्विच किया है।
हालांकि यह ओ (1) नहीं है, जबकि पहले से क्रमबद्ध, या आंशिक रूप से क्रमबद्ध सूची को टिमसॉर्ट के साथ सॉर्ट करना पूरी तरह यादृच्छिक डेटा सेट को सॉर्ट करने से काफी अधिक कुशल है (बाद में तुलनात्मक प्रकार के लिए O(n log n)
से अधिक कुशल होने का कोई तरीका नहीं है , यह यादृच्छिक डेटा के लिए सच नहीं है)।
ठीक है, लेकिन संभावना है कि जो व्यक्ति से पूछा उपयोग कर रहा है जावा 7 काफी कम है (कुछ लोगों का कहना 18% http://blog.jelastic.com/2011/12/07/java-7-adoption-grows-to-18-percent/) –
@ vitalik संभावना है कि भविष्य के पाठक जावा 7 का उपयोग करेंगे या बाद में केवल वहां से बढ़ सकते हैं। एसओ एक सूचना के संग्रह के रूप में इरादा है, एक मंच नहीं। – EJP
@EJP इस बात को ध्यान में रखते हुए कि उस टिप्पणी को पोस्ट करते समय उस पोस्टिक ने मेरी पोस्ट को कम नहीं किया, क्या आपने अनजाने में गलत बात की? अन्यथा मुझे आश्चर्य है कि कोई भी मेरी पोस्ट को कम करेगा। बी 2 टी: मुझे लगता है कि जब तक मैं स्पष्ट रूप से उल्लेख करता हूं कि यह जावा 7 के लिए केवल सच है + कितने लोग जो भी संस्करण का उपयोग कर रहे हैं, वह बहुत महत्वपूर्ण नहीं है - 18% अभी भी बहुत सारे लोग हैं। – Voo
- 1. पहले आइटम द्वारा घोंसले की सूची को सॉर्ट करना - itemgetter चाल नहीं कर रहा है
- 2. ओ (1) पायथन
- 3. पूरी सूची को सॉर्ट किए बिना सूची के पहले 10 क्रमबद्ध आइटम कैसे प्राप्त करें
- 4. एक महंगा ऑपरेशन कास्टिंग कर रहा है?
- 5. ओ (1)
- 6. क्रमबद्ध एक सूची वर्णानुक्रम
- 7. जावा: एक अपरिवर्तनीय सूची को क्रमबद्ध करें
- 8. एक स्ट्रिंग ओ (एन लॉग एन) को सॉर्ट क्यों कर रहा है?
- 9. ओ (1) जटिलता
- 10. ओ (1)
- 11. एक लिंक की गई सूची ओ (1) में क्यों हट रहा है?
- 12. बबल सॉर्ट ओ (एन^2) क्यों है?
- 13. क्रमबद्ध सूची को महत्व देता
- 14. एक सॉर्ट किए गए सरणी की तुलना में एक क्रमबद्ध सरणी को धीमा क्यों कर रहा है?
- 15. बैकबोन/अंडरस्कोर सॉर्ट बाई संग्रह को सॉर्ट नहीं कर रहा है
- 16. ओ (1) हैश लुक अप?
- 17. सॉर्ट किए बिना यादृच्छिक इंक सॉर्ट करना? ओ (एन)
- 18. as_json एसोसिएशन पर as_json को कॉल नहीं कर रहा है
- 19. जावा में एक सूची को क्रमबद्ध कैसे करें?
- 20. स्ट्रिंग है। एलिमेंटएट() ओ (1)?
- 21. हास्केल: ओ (1) के साथ डेटास्ट्रक्शन और ओ (1) अनुक्रमण?
- 22. क्रमबद्ध स्ट्रिंग सूची मान
- 23. LinkedList.Clear() ओ (1)
- 24. ओ (1) सहायक अंतरिक्ष
- 25. क्रमबद्ध सूची
- 26. क्या जावा हैशप वास्तव में ओ (1) है?
- 27. एक php सरणी को क्रमबद्ध रूप से
- 28. त्रुटि: 'deviceready' से पहले cordova.exec() को कॉल करने का प्रयास कर रहा है।
- 29. 'ओ' से पहले विलंब एक नई लाइन खुलता है?
- 30. एक लिंक की गई सूची ओ (1) के बीच में क्यों डालना है?
सख्ती से बोलते हुए, ओ (1) का मतलब 1 सूचकांक नहीं है :) – unbeli
@unbeli +1 ने मेरा जवाब सही किया। – Aidanc
और 'ओ (एन) + ओ (एन लॉग एन) 'ओ (एन लॉग एन) के समान है' :) – unbeli