मैं अभी तक स्वीकार किए गए उत्तर से काफी खुश नहीं हूं। तो मैं एक उत्तर पुनः प्रयास कर रहा हूं:
क्या यह सैद्धांतिक रूप से ओ (एन) की एक अमूर्त जटिलता में एन पूर्णांक की सरणी को सॉर्ट करना संभव है?
इस प्रश्न का उत्तर उस मशीन पर निर्भर करता है जो सॉर्टिंग एल्गोरिदम निष्पादित करेगा। यदि आपके पास यादृच्छिक एक्सेस मशीन है, जो बिल्कुल 1 बिट पर काम कर सकती है, तो आप radix sort को k
बिट्स के साथ पूर्णांक के लिए कर सकते हैं, जो पहले ही सुझाया गया था। तो आप O(kn)
जटिलता के साथ समाप्त हो जाते हैं।
लेकिन यदि आप कम से कम k
बिट्स (जो सभी उपभोक्ता कंप्यूटर हैं) के शब्द आकार के साथ एक निश्चित आकार की वर्ड मशीन पर काम कर रहे हैं, तो आप सबसे अच्छा प्राप्त कर सकते हैं O(n log n)
। ऐसा इसलिए है क्योंकि log n < k
या आप पहले count sort कर सकते हैं और फिर O (n log n)
एल्गोरिदम के साथ सॉर्ट कर सकते हैं, जो पहले मामले को भी उत्पन्न करेगा।
ओ (एन) जटिलता का सबसे खराब मामला बनाने की कोशिश करने के बारे में क्या?
यह संभव नहीं है। एक लिंक पहले से ही दिया गया था। सबूत का विचार यह है कि सॉर्ट करने में सक्षम होने के लिए, आपको प्रत्येक तत्व को क्रमबद्ध करने का निर्णय लेना होगा यदि यह सॉर्ट किए जाने वाले किसी अन्य तत्व के लिए बड़ा या छोटा हो। पारगमन का उपयोग करके इसे निर्णय पेड़ के रूप में दर्शाया जा सकता है, जिसमें n
नोड्स और log n
गहराई है। तो यदि आप Ω(n log n)
से बेहतर प्रदर्शन करना चाहते हैं तो इसका मतलब है कि उस निर्णय पेड़ से किनारों को हटा देना। लेकिन यदि निर्णय पेड़ पूरा नहीं हुआ है, तो आप यह सुनिश्चित कर सकते हैं कि आपने कुछ तत्व a
और b
के बारे में सही निर्णय लिया है?
क्या आप स्मृति उपयोग पर कोई सीमा नहीं दे सकते हैं ऐसे एल्गोरिदम बनाते हैं?
तो ऊपर से जैसा संभव नहीं है। और शेष प्रश्न इसलिए प्रासंगिक नहीं हैं।
कोई टिप्पणी के बिना वोट दें? – Vadiklk
मुझे अभी एक डाउनवोट नहीं दिख रहा है (शायद पूर्ववत किया गया है?) हालांकि, कुछ स्पष्ट कारणों से कोई इसे कम कर सकता है: यह होमवर्क के समान लगता है; यह cstheory.stackexchange.com –