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

C++ में ग्नोम सॉर्ट प्रोग्राम


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

यहां हम देखेंगे कि ग्नोम सॉर्ट कैसे काम करता है। यह एक और सॉर्टिंग एल्गोरिदम है। इस दृष्टिकोण में यदि सूची पहले से सॉर्टेड है तो यह O(n) समय लेता है। इसलिए सर्वश्रेष्ठ स्थिति समय जटिलता O(n) है। लेकिन औसत स्थिति और सबसे खराब स्थिति जटिलता O(n²) है।

एल्गोरिदम

gnomeSort(arr, n):
Begin
    index := 0
    while index < n:
        if index == 0:
            index := index + 1
        end if
        if arr[index] >= arr[index - 1]:
            index := index + 1
        else:
            exchange arr[index] and arr[index - 1]
            index := index - 1
        end if
    done
End

कैसे काम करता है

ग्नोम सॉर्ट (स्टुपिड सॉर्ट के रूप में भी जाना जाता है) एक बगीचे के ग्नोम की तरह काम करता है जो फूलों के गमलों को सॉर्ट करता है:

  1. पहले तत्व से शुरू करें
  2. यदि वर्तमान तत्व पिछले से बड़ा या बराबर है, तो आगे बढ़ें
  3. यदि छोटा है, तो स्वैप करें और एक कदम पीछे जाएं
  4. शुरुआत में पहुंचने पर आगे बढ़ें
  5. अंत तक पहुंचने तक दोहराएं

उदाहरण

#include <iostream>
#include <algorithm>
using namespace std;

void gnomeSort(int arr[], int n) {
    int index = 0;
    while(index < n) {
        if(index == 0) {
            index++;
        }
        if(arr[index] >= arr[index - 1]) {
            index++;
        } else {
            swap(arr[index], arr[index - 1]);
            index--;
        }
    }
}

int main() {
    int data[] = {54, 74, 98, 154, 98, 32, 20, 13, 35, 40};
    int n = sizeof(data) / sizeof(data[0]);

    cout << "Sorted Sequence: ";
    gnomeSort(data, n);

    for(int i = 0; i < n; i++) {
        cout << data[i] << " ";
    }
    cout << endl;
    return 0;
}

आउटपुट

Sorted Sequence 13 20 32 35 40 54 74 98 98 154

चरण-दर-चरण ट्रेस (सरणी: 3, 2, 1)

इंडेक्स सरणी क्रिया
0 [3, 2, 1] इंडेक्स 0 → आगे बढ़ें
1 [3, 2, 1] 2 < 3 → स्वैप → [2, 3, 1], पीछे जाएं
0 [2, 3, 1] इंडेक्स 0 → आगे बढ़ें
1 [2, 3, 1] 3 >= 2 → आगे बढ़ें
2 [2, 3, 1] 1 < 3 → स्वैप → [2, 1, 3], पीछे जाएं
1 [2, 1, 3] 1 < 2 → स्वैप → [1, 2, 3], पीछे जाएं
0 [1, 2, 3] इंडेक्स 0 → आगे बढ़ें
1 [1, 2, 3] 2 >= 1 → आगे बढ़ें
2 [1, 2, 3] 3 >= 2 → आगे बढ़ें
3 [1, 2, 3] समाप्त

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

स्थिति समय जटिलता स्थान जटिलता
सर्वश्रेष्ठ O(n) O(1)
औसत O(n²) O(1)
सबसे खराब O(n²) O(1)

विशेषताएं

  • इन-प्लेस सॉर्टिंग
  • स्थिर (स्टेबल) सॉर्ट
  • कोई नेस्टेड लूप नहीं - सिंगल लूप वेरिएबल
  • लगभग सॉर्टेड सरणियों के लिए अनुकूली
  • इन्सर्शन सॉर्ट के समान लेकिन अलग नियंत्रण प्रवाह
  1. C++ में पिरामिड के आयतन का प्रोग्राम C++ में पिरामिड के आयतन का प्रोग्राम

    पिरामिड के बेस के प्रकार के आधार पर भुजाएं दी गई हैं, कार्य पिरामिड का आयतन गणना करना है।पिरामिड एक 3-D आकृति है जिसकी बाहरी सतहें त्रिकोणीय हैं जो सामान्य बिंदु पर मिलती हैं जिससे पिरामिड का तीक्ष्ण किनारा बनता है। पिरामिड का आयतन उसके बेस के प्रकार पर निर्भर करता है।पिरामिड के बेस के विभिन्न प्रका

  1. C++ में क्विकसॉर्ट प्रोग्राम C++ में क्विकसॉर्ट प्रोग्राम

    क्विकसॉर्ट क्या है? क्विकसॉर्ट एक सॉर्टिंग तकनीक है जो अनसॉर्टेड सूची (सरणी) को सॉर्ट करने के लिए तुलनाओं का उपयोग करती है। क्विकसॉर्ट को पार्टीशन एक्सचेंज सॉर्ट के नाम से भी जाना जाता है। यह एक स्थिर सॉर्ट नहीं है, क्योंकि समान सॉर्ट आइटम्स का सापेक्ष क्रम संरक्षित नहीं रहता। क्विकसॉर्ट एक सरणी प

  1. पायथन प्रोग्राम: नोम सॉर्ट पायथन प्रोग्राम: नोम सॉर्ट

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक सरणी दी गई है, हमें नोम सॉर्ट का उपयोग करके इसे क्रमबद्ध करना है। एल्गोरिदम 1. सबसे पहले हम सरणी को बाएं से दाएं पार करते हैं। 2. अब, यदि वर्तमान तत्व पिछले तत्व से बड़ा या बराबर है तो हम एक कदम आगे बढ़ते हैं। 3. अन्यथा, यद