Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में बोगोसॉर्ट या परम्यूटेशन सॉर्ट प्रोग्राम


बोगोसॉर्ट क्या है?

यहां हम एक और सॉर्टिंग एल्गोरिदम देखेंगे जिसे बोगो सॉर्ट कहा जाता है। इस सॉर्ट को परम्यूटेशन सॉर्ट, स्टुपिड सॉर्ट, स्लो सॉर्ट आदि के नाम से भी जाना जाता है। यह सॉर्टिंग एल्गोरिदम विशेष रूप से अप्रभावी सॉर्टिंग तकनीक है। यह "जनरेट एंड टेस्ट" पैराडाइम के अंतर्गत आता है। यह तब तक परम्यूटेशन उत्पन्न करता रहता है जब तक यह सॉर्ट न हो जाए। अवधारणा बहुत सीधी है: जब तक सूची सॉर्ट न हो जाए, बस तत्वों को शफल करते रहें।

एल्गोरिदम

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¹⁸ परम्यूटेशन
  • ब्रह्मांड की आयु से भी अधिक समय लगेगा

संबंधित एल्गोरिदम

  • बोगोबोगोसॉर्ट: और भी खराब - प्रत्येक तत्व के लिए बोगोसॉर्ट चलाता है
  • क्वांटम बोगोसॉर्ट: सैद्धांतिक क्वांटम संस्करण
  • स्लीप सॉर्ट: एक और मजाक एल्गोरिदम

शैक्षिक मूल्य

बोगोसॉर्ट का उपयोग मुख्य रूप से शिक्षण उद्देश्यों के लिए किया जाता है ताकि प्रदर्शित किया जा सके:

  • क्यों एल्गोरिदम दक्षता मायने रखती है
  • "जनरेट एंड टेस्ट" पैराडाइम की सीमाएं
  • सही एल्गोरिदम चुनने का महत्व

चेतावनी: उत्पादन कोड में कभी भी बोगोसॉर्ट का उपयोग न करें!

  1. C++ में सरणी के एलिमेंट्स का गुणनफल C++ में सरणी के एलिमेंट्स का गुणनफल

    पूर्णांक एलिमेंट्स की एक सरणी दी गई है और कार्य सरणी के एलिमेंट्स को गुणा करना और प्रदर्शित करना है। उदाहरण इनपुट-: arr[]={1,2,3,4,5,6,7} आउटपुट-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 इनपुट-: arr[]={3, 4,6, 2, 7, 8, 4} आउटपुट-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 नीचे दिए गए प्रोग्राम में उपयोग किया गया द

  1. C++ में ऑक्टल से डेसिमल रूपांतरण C++ में ऑक्टल से डेसिमल रूपांतरण

    एक ऑक्टल संख्या इनपुट के रूप में दी गई है, कार्य दी गई ऑक्टल संख्या को डेसिमल संख्या में बदलना है। कंप्यूटर में डेसिमल संख्याओं को आधार 10 के साथ दर्शाया जाता है और ऑक्टल संख्या को आधार 8 के साथ दर्शाया जाता है जो अंक 0 से 7 तक होती है जबकि डेसिमल संख्याएं 0-9 से शुरू होने वाला कोई भी संख्यात्मक अंक

  1. पायथन प्रोग्राम: बोगोसॉर्ट या क्रमपरिवर्तन सॉर्ट पायथन प्रोग्राम: बोगोसॉर्ट या क्रमपरिवर्तन सॉर्ट

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक सरणी दी गई है, हमें क्रमपरिवर्तन सॉर्ट की अवधारणा का उपयोग करके इसे क्रमबद्ध करना है। बोगोसॉर्ट को क्रमपरिवर्तन सॉर्ट के रूप में भी जाना जाता है, यह उत्पन्न और परीक्षण प्रतिमानों पर आधारित है। उदाहरण a[i+1]): r