कॉकटेल सॉर्ट बबल सॉर्ट का एक और रूपांतर है। बबल सॉर्ट तकनीक में, यह हमेशा बाएं से दाएं खोजता है, और अंत में सबसे बड़ा तत्व पाता है, दूसरे चरण में यह दूसरे सबसे बड़े तत्व को दूसरे अंतिम स्थान पर पाता है। यह छँटाई तकनीक वैकल्पिक रूप से दोनों दिशाओं में चलती है। आइए विचार को समझने के लिए एल्गोरिथम देखें।
एल्गोरिदम
कॉकटेल (सरणी, n)
Begin flag := true start := 0, end := n-1 while flag is set, do flag := false for i in range start to end-1, do if arr[i] > arr[i+1], then exchange arr[i] and arr[i+1] flag := true end if done if flag is not set, then break end if flag := false end := end – 1 for i in range end -1 down to start, do if arr[i] > arr[i+1], then exchange arr[i] and arr[i+1] flag := true end if done start := start + 1 done End
उदाहरण
#include<iostream>
using namespace std;
void cocktailSort(int arr[], int n){
bool flag = true;
int start = 0, end = n-1;
while(flag){
flag = false;
for(int i = start; i<end; i++){ //scan from left to right as bubble sort
if(arr[i] > arr[i+1]){
swap(arr[i], arr[i+1]);
flag = true;
}
}
if(!flag){ //if nothing has changed simply break the loop
break;
}
flag = false;
end--; //decrease the end pointer
for(int i = end - 1; i >= start; i--){ //scan from right to left
if(arr[i] > arr[i+1]){
swap(arr[i], arr[i+1]);
flag = true;
}
}
start++;
}
}
main() {
int data[] = {54, 74, 98, 154, 98, 32, 20, 13, 35, 40};
int n = sizeof(data)/sizeof(data[0]);
cout << "Sorted Sequence ";
cocktailSort(data, n);
for(int i = 0; i <n;i++){
cout << data[i] << " ";
}
} आउटपुट
Sorted Sequence 13 20 32 35 40 54 74 98 98 154