শেকার সার্ট প্রদত্ত ডাটা সর্ট করতে ব্যবহৃত হয়। বাবল সার্টের বিপরীতে, শেকার সার্ট অ্যারেকে উভয় দিকেই অর্ডার করে। এই অ্যালগরিদমের বর্জ্য জটিলতা O(n²)।
অ্যালগরিদম
শুরু ShakerSort() ফাংশনে 'arr' ডাটা অ্যারে এবং 'n' মানগুলির সংখ্যা আর্গুমেন্ট হিসেবে থাকে। // নেস্টেড ফর লুপ ব্যবহার করে সর্টিং অ্যালগরিদম বাস্তবায়ন করুন। প্যারেন্ট লুপ 'i'-তে 0 থেকে n-1 পর্যন্ত চলবে এবং এর ভেতরে দুটি লুপ থাকবে। প্রথম লুপ 'j'-তে i+1 থেকে n-1 পর্যন্ত চলবে এবং swap() ব্যবহার করবে যদি a[j] < a[j-1] হয়। n কমান। দ্বিতীয় লুপ 'k'-তে m-1 থেকে i+1 পর্যন্ত চলবে এবং swap() ব্যবহার করবে যদি a[k] < a[k-1] হয়। i বাড়ান। শেষ
উদাহরণ কোড
#include <iostream>
using namespace std;
void swap(int *a, int *b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void ShakerSort(int a[], int m) {
int i, j, k;
for (i = 0; i < m;) {
for (j = i + 1; j < m; j++) {
if (a[j] < a[j - 1])
swap(&a[j], &a[j - 1]);
}
m--;
for (k = m - 1; k > i; k--) {
if (a[k] < a[k - 1])
swap(&a[k], &a[k - 1]);
}
i++;
}
}
int main() {
int n, i;
cout << "\nসর্ট করার ডাটা উপাদানের সংখ্যা লিখুন: ";
cin >> n;
int a[n];
for (i = 0; i < n; i++) {
cout << "এলিমেন্ট " << i + 1 << ": ";
cin >> a[i];
}
ShakerSort(a, n);
cout << "\nসর্টেড ডাটা ";
for (i = 0; i < n; i++)
cout << "->" << a[i];
return 0;
}
আউটপুট
সর্ট করার ডাটা উপাদানের সংখ্যা লিখুন: 4 এলিমেন্ট 1: 3 এলিমেন্ট 2: 1 এলিমেন্ট 3: 7 এলিমেন্ট 4: 6 সর্টেড ডাটা ->1->3->6->7