ককটেইল সর্ট বাবল সর্টের আরেকটি বৈরিয়েশন। বাবল সর্ট টেকনিকলে, এটি সবসময় বাম থেকে ডানে সার্চ করে, এবং সবচেয়ে বড় এলিমেন্ট শেষে পায়, দ্বিতীয় ফেজে দ্বিতীয় সবচেয়ে বড় এলিমেন্ট দ্বিতীয় শেষ পজিশনে পায়। এই সর্টিং টেকনিক ব andòর দিকেই বাক্যপathi করে। আইডিয়া বুঝতে অ্যালগরিদম দেখি।
অ্যালগরিদম
cocktail(array, 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++){ // বাম থেকে ডানে স্ক্যান বাবল সর্টের মতো
if(arr[i] > arr[i+1]){
swap(arr[i], arr[i+1]);
flag = true;
}
}
if(!flag){ // যদি কিছুই পরিবর্তন না হয় তাহলে লুপ ব্রেক
break;
}
flag = false;
end--; // এন্ড পয়েন্টার কমানো
for(int i = end - 1; i >= start; i--){ // ডান থেকে বামে স্ক্যান
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