बोगोसॉर्ट क्या है?
यहां हम एक और सॉर्टिंग एल्गोरिदम देखेंगे जिसे बोगो सॉर्ट कहा जाता है। इस सॉर्ट को परम्यूटेशन सॉर्ट, स्टुपिड सॉर्ट, स्लो सॉर्ट आदि के नाम से भी जाना जाता है। यह सॉर्टिंग एल्गोरिदम विशेष रूप से अप्रभावी सॉर्टिंग तकनीक है। यह "जनरेट एंड टेस्ट" पैराडाइम के अंतर्गत आता है। यह तब तक परम्यूटेशन उत्पन्न करता रहता है जब तक यह सॉर्ट न हो जाए। अवधारणा बहुत सीधी है: जब तक सूची सॉर्ट न हो जाए, बस तत्वों को शफल करते रहें।
एल्गोरिदम
bogoSort(array, n):
Begin
while the array is not sorted:
shuffle array
done
End
उदाहरण
#include <iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;
bool isSorted(int arr[], int n) {
// जांचें कि सूची सॉर्टेड है या नहीं
while (--n > 0)
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);
}
int 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] << " ";
}
cout << endl;
return 0;
}
आउटपुट
Sorted Sequence 5 13 20 32 35 40 54 74 98 98
जटिलता विश्लेषण
| स्थिति | समय जटिलता |
|---|---|
| सर्वश्रेष्ठ | O(n) - पहले से सॉर्टेड |
| औसत | O((n+1)!) |
| सबसे खराब | अनंत (कभी समाप्त नहीं हो सकता) |
स्थान जटिलता: O(1)
क्यों बोगोसॉर्ट अव्यावहारिक है
- n=10 के लिए, औसतन 10! = 3,628,800 परम्यूटेशन
- n=20 के लिए, 20! ≈ 2.43 × 10¹⁸ परम्यूटेशन
- ब्रह्मांड की आयु से भी अधिक समय लगेगा
संबंधित एल्गोरिदम
- बोगोबोगोसॉर्ट: और भी खराब - प्रत्येक तत्व के लिए बोगोसॉर्ट चलाता है
- क्वांटम बोगोसॉर्ट: सैद्धांतिक क्वांटम संस्करण
- स्लीप सॉर्ट: एक और मजाक एल्गोरिदम
शैक्षिक मूल्य
बोगोसॉर्ट का उपयोग मुख्य रूप से शिक्षण उद्देश्यों के लिए किया जाता है ताकि प्रदर्शित किया जा सके:
- क्यों एल्गोरिदम दक्षता मायने रखती है
- "जनरेट एंड टेस्ट" पैराडाइम की सीमाएं
- सही एल्गोरिदम चुनने का महत्व
चेतावनी: उत्पादन कोड में कभी भी बोगोसॉर्ट का उपयोग न करें!