এখানে আমরা আরেকটি সর্টিং অ্যালগরিদম দেখব যাকে বোগো সর্ট বলা হয়। এটিকে পারমুটেশন সর্ট, স্টুপিড সর্ট, স্লো সর্ট ইত্যাদিও বলা হয়। এই সর্টিং অ্যালগরিদম বিশেষভাবে অকার্যকর সর্টিং কৌশল। এটি জেনারেট এন্ড টেস্ট প্যারাডাইমের অধীনে পড়ে। এটি রিপিটেডলি একটি পারমুটেশন জেনারেট করে যতক্ষণ না সেটি সর্টেড হয়। ধারণাটি খুব সোজা। লিস্ট সর্টেড না হওয়া পর্যন্ত এলিমেন্টগুলো শাফল করুন।
অ্যালগরিদম
bogoSort(array, n)
Begin
while the arr is not sorted, do
shuffle arr
done
End
উদাহরণ
#include<iostream>
#include<cstdlib>
using namespace std;
bool isSorted(int arr[], int n) { // চেক করুন লিস্ট সর্টেড কিনা
while (--n > 1)
if (arr[n] < arr[n - 1])
return false;
return true;
}
void shuffle(int arr[], int n) {
for (int i = 0; i < n; i++)
swap(arr[i], arr[rand() % n]);
}
void bogoSort(int arr[], int n){
while (!isSorted(arr, n))
shuffle(arr, n);
}
main() {
int data[] = {54, 74, 98, 5, 98, 32, 20, 13, 35, 40};
int n = sizeof(data)/sizeof(data[0]);
cout << "Sorted Sequence ";
bogoSort(data, n);
for(int i = 0; i < n; i++){
cout << data[i] << " ";
}
}
আউটপুট
Sorted Sequence 5 13 20 32 35 40 54 74 98 98