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

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


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

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

Input: 5 3 4 2 1 Output: 1 2 3 4 5

व्याख्या

बोगोसॉर्ट में, सरणी में असॉर्टेड तत्व होते हैं। यह जांचता है कि सरणी के तत्व क्रम में हैं या नहीं। यदि नहीं हैं, तो यह तत्वों की स्थिति को रैंडमली स्वैप करके बदल देता है, और इस प्रक्रिया को तब तक दोहराता है जब तक सरणी सॉर्ट न हो जाए।

एल्गोरिदम

bogoSort(array, n)
Begin
    while array is not sorted
        shuffle array
    done
End

उदाहरण

#include <iostream>
#include <stdlib.h>
using namespace std;

bool is_sorted(int *arr, int n) {
    while (--n >= 1) {
        if (arr[n] < arr[n-1]) {
            return false;
        }
    }
    return true;
}

void shuffle(int *arr, int n) {
    int temp, r;
    for(int i = 0; i < n; i++) {
        temp = arr[i];
        r = rand() % n;
        arr[i] = arr[r];
        arr[r] = temp;
    }
}

void bogosort(int *arr, int n) {
    while (!is_sorted(arr, n)) {
        shuffle(arr, n);
    }
}

int main() {
    int arr[] = {5, 3, 4, 2, 1};
    int n = 5;
    bogosort(arr, n);
    for (int i = 0; i < n; i++) {
        cout << arr[i] << "\t";
    }
    return 0;
}

आउटपुट

1 2 3 4 5

जटिलता विश्लेषण

  • समय जटिलता: O((n+1)!) - अत्यंत धीमा
  • स्थान जटिलता: O(1)
  • व्यावहारिक उपयोग: केवल शैक्षिक उद्देश्यों के लिए

नोट: बोगोसॉर्ट का वास्तविक अनुप्रयोगों में कभी उपयोग नहीं किया जाना चाहिए क्योंकि इसकी समय जटिलता फैक्टरियल है।

  1. - C++ प्रोग्राम: रेडिक्स सॉर्ट लागू करना

    रेडिक्स सॉर्ट गैर-तुलनात्मक सॉर्टिंग एल्गोरिदम है। यह सॉर्टिंग एल्गोरिदम पूर्णांक कुंजियों पर काम करता है उन अंकों को समूहित करके जो समान स्थिति और मान साझा करते हैं। रेडिक्स एक संख्या प्रणाली का आधार है। जैसा कि हम जानते हैं कि दशमलव प्रणाली में रेडिक्स या आधार 10 है। इसलिए कुछ दशमलव संख्याओं को स

  1. - शेकर सॉर्ट करने के लिए C++ प्रोग्राम

    शेकर सॉर्ट का उपयोग दिए गए डेटा को सॉर्ट करने के लिए किया जाता है। बबल सॉर्ट के विपरीत, शेकर सॉर्ट सरणी को दोनों दिशाओं में ऑर्डर करता है। इस एल्गोरिदम की सबसे खराब जटिलता O(n^2) है। एल्गोरिदम शुरुआत    ShakerSort() फ़ंक्शन में arr डेटा की सरणी और n मानों की संख्या, आर्गुमेंट सूची में होती

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

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