कॉकटेल सॉर्ट बबल सॉर्ट के विपरीत काम करता है, जिसमें एलिमेंट्स को बाएं से दाएं पुनरावृति किया जाता है, और सबसे बड़ा एलिमेंट पहले अपनी सही स्थिति में लाया जाता है और इसी तरह। कॉकटेल सॉर्ट में, एलिमेंट्स को वैकल्पिक क्रम में दोनों दिशाओं (बाएं और दाएं) में पुनरावृति किया जाता है।
कॉकटेल सॉर्ट के लिए प्रोग्राम निम्नलिखित है:
उदाहरण
public class Demo{
static int temp;
static void Cocktail(int a[], int n){
boolean swap = true;
int begin = 0,i;
int end = n - 1;
while (swap) {
swap = false;
for (i = begin; i < end; ++i){
if (a[i] > a[i + 1]){
temp = a[i];
a[i]=a[i+1];
a[i+1]=temp;
swap = true;
}
}
if (!swap)
break;
swap = false;
for (i = end - 1; i >= begin; --i){
if (a[i] > a[i + 1]){
temp = a[i];
a[i]=a[i+1];
a[i+1]=temp;
swap = true;
}
}
++begin;
}
}
public static void main(String[] args) {
int my_arr[] = {34, 78, 90, 32, 67, 12, 1, 0, 95};
Cocktail(my_arr, my_arr.length);
System.out.println("सॉर्ट किया गया ऐरे है ");
for (int i = 0; i < my_arr.length; i++)
System.out.print(my_arr[i]+" ");
System.out.println();
}
}
आउटपुट
सॉर्ट किया गया ऐरे है 0 1 12 32 34 67 78 90 95
पहले चरण में, लूप बाएं से दाएं चलाया जाता है (बबल सॉर्ट के समान) जिसके दौरान, आसन्न आइटम्स की तुलना की जाती है। यदि बाएं हाथ का मान दाएं हाथ के मान से बड़ा है, तो मानों को स्वैप किया जाता है। एक बार पहली पुनरावृति समाप्त हो जाने के बाद, सबसे बड़ा एलिमेंट ऐरे के अंत में पाया जाएगा। अगले चरण में, लूप दाएं से बाएं चलाया जाता है, सबसे हाल ही में सॉर्ट किए गए आइटम को छोड़कर। यहां फिर से, आसन्न एलिमेंट्स की तुलना की जाती है और बड़ा एलिमेंट ऐरे के अंत में जोड़ा जाता है।