एक मानक एल्गोरिदम पाठ्यक्रम में हम सिखाया जाता है कि quicksort है औसत और पर सबसे खराब स्थिति में। उसी समय, अन्य सॉर्टिंग एल्गोरिदम का अध्ययन किया जाता है जो सबसे खराब स्थिति में होते हैं (जैसे मर्जसॉर्ट और हेस्पोर्ट ), और सबसे अच्छा मामले में भी रैखिक समय ( बुलबुले की तरह ) लेकिन स्मृति की कुछ अतिरिक्त जरूरतों के साथ।O ( n 2 ) O ( n लॉग एन )
कुछ अधिक चलने वाले समय में तेज नज़र के बाद यह कहना स्वाभाविक है कि क्विकॉर्ट दूसरों की तरह कुशल नहीं होना चाहिए ।
इसके अलावा, विचार करें कि छात्र बुनियादी प्रोग्रामिंग पाठ्यक्रमों में सीखते हैं कि पुनरावृत्ति वास्तव में सामान्य नहीं है क्योंकि यह बहुत अधिक मेमोरी का उपयोग कर सकता है, आदि इसलिए (और भले ही यह एक वास्तविक तर्क नहीं है), इससे यह विचार मिलता है कि क्विकॉर्ट्स नहीं हो सकता है वास्तव में अच्छा है क्योंकि यह एक पुनरावर्ती एल्गोरिथ्म है।
फिर, क्विकसर्ट अन्य सॉर्टिंग एल्गोरिदम को अभ्यास में क्यों बेहतर बनाता है? क्या इसका वास्तविक दुनिया के आंकड़ों की संरचना से कोई लेना -देना है ? क्या इसका कंप्यूटर में मेमोरी के काम करने के तरीके से लेना-देना है? मुझे पता है कि कुछ यादें दूसरों की तुलना में तेज़ हैं, लेकिन मुझे नहीं पता कि इस काउंटर-सहज प्रदर्शन का असली कारण (सैद्धांतिक अनुमानों की तुलना में) है।
अद्यतन 1: एक विहित जवाब कह रही है कि स्थिरांक में शामिल औसत मामले के अन्य में शामिल स्थिरांक तुलना में छोटे होते एल्गोरिदम। हालाँकि, मुझे अभी तक इसका एक उचित औचित्य देखना है, केवल सहज ज्ञान युक्त विचारों के बजाय सटीक गणना के साथ।O ( n लॉग एन )
किसी भी मामले में, ऐसा लगता है कि वास्तविक अंतर तब होता है, जैसा कि कुछ उत्तर स्मृति स्तर पर सुझाते हैं, जहां कार्यान्वयन कंप्यूटर की आंतरिक संरचना का लाभ उठाते हैं, उदाहरण के लिए, रैम की तुलना में कैश मेमोरी तेज है। चर्चा पहले से ही दिलचस्प है, लेकिन मैं अभी भी स्मृति-प्रबंधन के संबंध में अधिक विस्तार देखना चाहता हूं, क्योंकि ऐसा प्रतीत होता है कि इसका जवाब इसके साथ करना है।
अपडेट 2: कई वेब पेज हैं जो कि छंटाई एल्गोरिदम की तुलना की पेशकश करते हैं, दूसरों की तुलना में कुछ कट्टरपंथी (सबसे विशेष रूप से सॉर्टिंग-अल्गोरिद्म डॉट कॉम )। एक अच्छा दृश्य सहायता प्रस्तुत करने के अलावा, यह दृष्टिकोण मेरे प्रश्न का उत्तर नहीं देता है।