खोल छँटाई तकनीक सम्मिलन छँटाई पर आधारित है। सम्मिलन क्रम में कभी-कभी हमें किसी वस्तु को सही स्थान पर सम्मिलित करने के लिए बड़े ब्लॉक को स्थानांतरित करने की आवश्यकता होती है। शेल सॉर्ट का उपयोग करके, हम बड़ी संख्या में स्थानांतरण से बच सकते हैं। छँटाई एक विशिष्ट अंतराल के साथ की जाती है। प्रत्येक पास के बाद, अंतराल को छोटा अंतराल बनाने के लिए कम किया जाता है।
शैल सॉर्ट तकनीक की जटिलता
- समय जटिलता:सर्वोत्तम स्थिति के लिए O(n log n), और अन्य मामलों के लिए, यह अंतराल अनुक्रम पर निर्भर करता है।
- अंतरिक्ष जटिलता:O(1)
इनपुट और आउटपुट
इनपुट:क्रमबद्ध सूची:23 56 97 21 35 689 854 12 47 66आउटपुट:क्रमबद्ध करने से पहले सरणी:23 56 97 21 35 689 854 12 47 66छँटाई के बाद सरणी:12 21 23 35 47 56 66 97 689 854
एल्गोरिदम
shellSort(सरणी, आकार)
इनपुट - डेटा की एक सरणी, और सरणी में कुल संख्या
आउटपुट - क्रमबद्ध सरणी
गैप के लिए शुरू करें:=आकार/2, जब गैप> 0 और गैप को गैप के साथ अपडेट किया जाता है / 2 j के लिए करें:=गैप टू साइज- 1 k के लिए करें:=j-gap to 0, गैप वैल्यू से घटाएं अगर सरणी [के + गैप]> =सरणी [के] अन्य स्वैप सरणी तोड़ें [के + गैप] सरणी के साथ [के] किया गया हो गया अंत
उदाहरण
#includeनेमस्पेस का उपयोग करके std;void swapping(int &a, int &b) { // a और b int temp की सामग्री को स्वैप करें; अस्थायी =ए; ए =बी; बी =अस्थायी;} शून्य प्रदर्शन (int * सरणी, int आकार) {के लिए (int i =0; i <आकार; i ++) cout <<सरणी [i] <<""; cout < 0; गैप =गैप/2) {// शुरू में गैप =n/2, गैप से घटते हुए /2 के लिए (j =गैप; j =0; के - =गैप) {अगर (एआर [के + गैप]> =एआर [के]) ब्रेक; अन्य स्वैपिंग (गिरफ्तारी [के + गैप], एआर [के]); } } }}इंट मेन () {इंट एन; cout <<"तत्वों की संख्या दर्ज करें:"; सिनेमा>> एन; इंट गिरफ्तारी [एन]; // दिए गए तत्वों की संख्या के साथ एक सरणी बनाएं cout <<"तत्व दर्ज करें:" < > arr[i]; } cout <<"छँटाई से पहले सरणी:"; प्रदर्शन (गिरफ्तारी, एन); शेलसॉर्ट (गिरफ्तारी, एन); cout <<"सॉर्ट करने के बाद सरणी:"; प्रदर्शन (गिरफ्तारी, एन);}
आउटपुट
तत्वों की संख्या दर्ज करें:10तत्व दर्ज करें:23 56 97 21 35 689 854 12 47 66क्रमबद्ध करने से पहले सरणी:23 56 97 21 35 689 854 12 47 66क्रमबद्ध करने के बाद सरणी:12 21 23 35 47 56 66 97 689 854पूर्व>