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