कॉकटेल सॉर्ट बबल सॉर्ट का एक और रूपांतर है। बबल सॉर्ट तकनीक में, यह हमेशा बाएं से दाएं खोजता है, और अंत में सबसे बड़ा तत्व पाता है, दूसरे चरण में यह दूसरे सबसे बड़े तत्व को दूसरे अंतिम स्थान पर पाता है। यह छँटाई तकनीक वैकल्पिक रूप से दोनों दिशाओं में चलती है। आइए विचार को समझने के लिए एल्गोरिथम देखें।
एल्गोरिदम
कॉकटेल (सरणी, 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