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

काउंटिंग सॉर्ट

काउंटिंग सॉर्ट एक स्टेबल सॉर्टिंग तकनीक है, जिसका उपयोग ऑब्जेक्ट्स को छोटी संख्याओं की कीज़ के अनुसार सॉर्ट करने के लिए किया जाता है। यह उन कीज़ की संख्या गिनता है जिनके की वैल्यूज़ समान हैं। यह सॉर्टिंग तकनीक तब प्रभावी होती है जब विभिन्न कीज़ के बीच का अंतर अधिक बड़ा नहीं होता, अन्यथा यह स्पेस कॉम्प्लेक्सिटी बढ़ा सकती है।

काउंटिंग सॉर्ट तकनीक की जटिलता

  • टाइम कॉम्प्लेक्सिटी: O(n + r)
  • स्पेस कॉम्प्लेक्सिटी: O(n + r)

इनपुट और आउटपुट

इनपुट: अनसॉर्टेड डेटा की लिस्ट: 2 5 6 2 3 10 3 6 7 8
आउटपुट: सॉर्टिंग से पहले ऐरे: 2 5 6 2 3 10 3 6 7 8
सॉर्टिंग के बाद ऐरे: 2 2 3 3 5 6 6 7 8 10

एल्गोरिदम

countingSort(array, size)

इनपुट: डेटा का एक ऐरे, और ऐरे में कुल संख्या
आउटपुट: सॉर्टेड ऐरे

Begin
    max = ऐरे से अधिकतम एलिमेंट प्राप्त करें
    साइज [max+1] का काउंट ऐरे परिभाषित करें
    for i := 0 to max do
        count[i] = 0 // काउंट ऐरे में सभी एलिमेंट्स को 0 पर सेट करें
    done
    for i := 1 to size do
        ऐरे में पाए गए प्रत्येक नंबर की काउंट बढ़ाएं
    done
    for i := 1 to max do
        count[i] = count[i] + count[i-1] // संचयी फ्रीक्वेंसी ढूंढें
    done
    for i := size to 1 decrease by 1 do
        आउटपुट ऐरे में नंबर स्टोर करें
        count[i] घटाएं
    done
    आउटपुट ऐरे वापस करें
End

उदाहरण

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

void display(int *array, int size) {
    for(int i = 1; i <= size; i++)
        cout << array[i] << " ";
    cout << endl;
}

int getMax(int array[], int size) {
    int max = array[1];
    for(int i = 2; i <= size; i++) {
        if(array[i] > max)
            max = array[i];
    }
    return max; // ऐरे से मैक्स एलिमेंट
}

void countSort(int *array, int size) {
    int output[size + 1];
    int max = getMax(array, size);
    int count[max + 1]; // काउंट ऐरे बनाएं (max+1 एलिमेंट्स)
    for(int i = 0; i <= max; i++)
        count[i] = 0; // काउंट ऐरे को ऑल जीरो से इनिशियलाइज़ करें
    for(int i = 1; i <= size; i++)
        count[array[i]]++; // काउंट ऐरे में नंबर काउंट बढ़ाएं
    for(int i = 1; i <= max; i++)
        count[i] += count[i - 1]; // संचयी फ्रीक्वेंसी ढूंढें
    for(int i = size; i >= 1; i--) {
        output[count[array[i]]] = array[i];
        count[array[i]] -= 1; // समान नंबर्स के लिए काउंट घटाएं
    }
    for(int i = 1; i <= size; i++) {
        array[i] = output[i]; // आउटपुट ऐरे को मेन ऐरे में स्टोर करें
    }
}

int main() {
    int n;
    cout << "एलिमेंट्स की संख्या दर्ज करें: ";
    cin >> n;
    int arr[n + 1]; // दिए गए एलिमेंट्स की संख्या के साथ ऐरे बनाएं
    cout << "एलिमेंट्स दर्ज करें:" << endl;
    for(int i = 1; i <= n; i++) {
        cin >> arr[i];
    }
    cout << "सॉर्टिंग से पहले ऐरे: ";
    display(arr, n);
    countSort(arr, n);
    cout << "सॉर्टिंग के बाद ऐरे: ";
    display(arr, n);
}

आउटपुट

एलिमेंट्स की संख्या दर्ज करें: 10
एलिमेंट्स दर्ज करें: 2 5 6 2 3 10 3 6 7 8
सॉर्टिंग से पहले ऐरे: 2 5 6 2 3 10 3 6 7 8
सॉर्टिंग के बाद ऐरे: 2 2 3 3 5 6 6 7 8 10

  1. जावास्क्रिप्ट में Array.prototype.sort() मेथड जावास्क्रिप्ट में Array.prototype.sort() मेथड

    जावास्क्रिप्ट Array.prototype.sort() मेथड का उपयोग एरे को सॉर्ट करने के लिए किया जाता है। सॉर्टिंग का क्रम अल्फाबेटिक, न्यूमेरिक, आरोही या अवरोही हो सकता है। Array.prototype.sort() मेथड के लिए कोड निम्नलिखित है: उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /

  1. - C# में हीप सॉर्ट

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

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

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक सरणी दी गई है, हमें काउंटिंग सॉर्ट की अवधारणा का उपयोग करके सरणी को क्रमबद्ध करना है। काउंटिंग सॉर्ट एक तकनीक है जिसमें हम एक विशिष्ट सीमा के बीच कीज़ पर काम करते हैं। इसमें विशिष्ट कुंजी और मान वाले ऑब्जेक्ट की संख्या गिनन