कॉकटेल सॉर्ट क्या है?
कॉकटेल सॉर्ट, बबल सॉर्ट का एक प्रकार है जो एक स्थिर सॉर्टिंग एल्गोरिदम और तुलनात्मक सॉर्ट दोनों है। इसे द्विदिशात्मक बबल सॉर्ट, कॉकटेल शेकर सॉर्ट, शेकर सॉर्ट, रिपल सॉर्ट, शफल सॉर्ट, या शटल सॉर्ट के नाम से भी जाना जाता है। यह एल्गोरिदम बबल सॉर्ट से इस मायने में भिन्न है कि यह सूची में प्रत्येक पास के दौरान दोनों दिशाओं में सॉर्ट करता है।
Input: 5 3 4 2 1 Output: 1 2 3 4 5
व्याख्या
कॉकटेल सॉर्ट में, सरणी में असॉर्टेड तत्व होते हैं। कॉकटेल सॉर्ट सूची में प्रत्येक पास के दौरान दोनों दिशाओं में काम करता है। यह सरणी को एक बार आगे और एक बार पीछे की दिशा में बबल सॉर्ट का उपयोग करके सॉर्ट करता है।
उदाहरण
#include <iostream>
using namespace std;
int main() {
int arr[] = {5, 3, 4, 2, 1};
int m = 5;
int n = m;
int c = 0;
do {
// आगे की दिशा में पास
for (int i = 0; i < n - 1; i++) {
if (arr[i] > arr[i + 1]) {
// बिना टेम्पररी वेरिएबल के स्वैप
arr[i] = arr[i] + arr[i + 1];
arr[i + 1] = arr[i] - arr[i + 1];
arr[i] = arr[i] - arr[i + 1];
}
}
n = n - 1;
// पीछे की दिशा में पास
for (int i = m - 1; i >= c; i--) {
if (arr[i] < arr[i - 1]) {
arr[i] = arr[i] + arr[i - 1];
arr[i - 1] = arr[i] - arr[i - 1];
arr[i] = arr[i] - arr[i - 1];
}
}
c = c + 1;
} while (n != 0 && c != 0);
for (int i = 0; i < m; i++) {
cout << arr[i] << "\t";
}
return 0;
}
आउटपुट
1 2 3 4 5
समय जटिलता
- सर्वश्रेष्ठ स्थिति: O(n) - जब सरणी पहले से सॉर्टेड हो
- औसत स्थिति: O(n²)
- सबसे खराब स्थिति: O(n²)
स्थान जटिलता
O(1) - केवल स्थिर अतिरिक्त स्थान की आवश्यकता होती है।