स्टूज सॉर्ट का उपयोग दिए गए डेटा को सॉर्ट करने के लिए किया जाता है। यह एक रिकर्सिव सॉर्टिंग एल्गोरिदम है। स्टूज सॉर्ट सरणी को दो ओवरलैपिंग भागों में विभाजित करता है, प्रत्येक 2/3 और सरणी को तीन चरणों में सॉर्ट करता है: पहले I फिर II और फिर से I भाग को सॉर्ट करके। इस एल्गोरिदम की सबसे खराब स्थिति की समय जटिलता O(n^2.7095) है।
एल्गोरिदम
शुरुआत डेटा का इनपुट लें। 'a' डेटा की सरणी और 'n' मानों की संख्या के साथ StoogeSort() फ़ंक्शन कॉल करें। रिकर्सिव दृष्टिकोण का उपयोग करके सॉर्टिंग लागू करें। सरणी को पहले 2/3 एलिमेंट को भाग I और अंतिम 2/3 को भाग II के रूप में विभाजित करें। फिर पहले, दूसरे और फिर से पहले भाग को StoogeSort() में भेजें। यदि लंबाई आगे विभाज्य नहीं है तो शुरू और अंत में एलिमेंट को स्वैप करें यदि a[end] < a[start]। मेन पर लौटें और परिणाम प्रदर्शित करें। अंत।
उदाहरण कोड
#include<iostream> using namespace std; void StoogeSort(int a[],int start, int end) { int temp; if(end-start+1 > 2) { temp = (end-start+1)/3; StoogeSort(a, start, end-temp); StoogeSort(a, start+temp, end); StoogeSort(a, start, end-temp); } if(a[end] < a[start]) { temp = a[start]; a[start] = a[end]; a[end] = temp; } } int main() { int m, i; cout<<"\nसॉर्ट किए जाने वाले डेटा एलिमेंट की संख्या दर्ज करें: "; cin>>m; int arr[m]; for(i = 0; i < m; i++) { cout<<"एलिमेंट "<<i+1<<": "; cin>>arr[i]; } StoogeSort(arr, 0, m-1); cout<<"\nसॉर्टेड डेटा "; for (i = 0; i < m; i++) cout<<"->"<<arr[i]; return 0; } आउटपुट
सॉर्ट किए जाने वाले डेटा एलिमेंट की संख्या दर्ज करें: 4 एलिमेंट 1 दर्ज करें: 6 एलिमेंट 2 दर्ज करें: 7 एलिमेंट 3 दर्ज करें: 3 एलिमेंट 4 दर्ज करें: 2 सॉर्टेड डेटा ->2->3->6->7