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

C++ प्रोग्राम: 100 से कम संख्याओं को O(n) कॉम्प्लेक्सिटी में सॉर्ट करना


कुछ छोटी संख्याओं को रैखिक समय में सॉर्ट करने के लिए हम काउंटिंग सॉर्ट तकनीक का उपयोग कर सकते हैं।

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

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

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

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

इनपुट - अनसॉर्टेड डेटा की लिस्ट: 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] का काउंट ऐरे परिभाषित करें
    i := 0 से max तक करें
        count[i] = 0 // काउंट ऐरे के सभी एलिमेंट्स को 0 पर सेट करें
    किया
    i := 1 से size तक करें
        ऐरे में मिली प्रत्येक संख्या की काउंट बढ़ाएं
    किया
    i := 1 से max तक करें
        count[i] = count[i] + count[i + 1] // संचयी फ्रीक्वेंसी ढूंढें
    किया
    i := size से 1 तक 1 से घटाते हुए करें
        आउटपुट ऐरे में नंबर स्टोर करें
        count[i] घटाएं
    किया
    आउटपुट ऐरे लौटाएं
End

उदाहरण कोड

#include <iostream>
using namespace std;

void counting_sort(int array[], int n) {
    int i, j;
    int count[n];
    for (i = 0; i < n; i++)
        count[i] = 0;
    for (i = 0; i < n; i++)
        (count[array[i]])++;
    for (i = 0, j = 0; i < n; i++)
        for (; count[i] > 0; (count[i])--)
            array[j++] = i;
}

int main() {
    int array[100], i, num;
    cout << "Enter the size of array : ";
    cin >> num;
    cout << "Enter the " << num << " elements to be sorted:" << endl;
    for (i = 0; i < num; i++)
        cin >> array[i];
    cout << "\nThe array of elements before sorting : " << endl;
    for (i = 0; i < num; i++)
        cout << array[i] << " ";
    cout << "\nThe array of elements after sorting : " << endl;
    counting_sort(array, num);
    for (i = 0; i < num; i++)
        cout << array[i] << " ";
    return 0;
}

आउटपुट

Enter the size of array : 8
Enter the 8 elements to be sorted: 54 89 23 20 18 88 65 31
The array of elements before sorting : 54 89 23 20 18 88 65 31
The array of elements after sorting : 54 89 23 20 18 88 65 31

  1. - C++ प्रोग्राम: ऐरे का उपयोग करके क्यू कार्यान्वयन

    ऐरे आधारित क्यू क्यू FIFO सिद्धांत का पालन करती है। ऐरे कार्यान्वयन में निश्चित आकार की सरणी और front/rear सूचकांक का उपयोग किया जाता है। C++ प्रोग्राम उदाहरण rear) { cout << Queue Underflow << endl; return; } else { cout << Element deleted: <<

  1. - C++ प्रोग्राम: ऐरे का उपयोग करके स्टैक कार्यान्वयन

    ऐरे आधारित स्टैक निश्चित आकार की सरणी और top सूचकांक का उपयोग करके स्टैक कार्यान्वयन। LIFO सिद्धांत का पालन करता है। C++ प्रोग्राम उदाहरण = MAX - 1) cout << Stack Overflow << endl; else { top++; stack[top] = val; } } void pop() { if (top = 0; i--)

  1. - C++ प्रोग्राम: सॉर्टेड ऐरे कार्यान्वयन (सिलेक्शन सॉर्ट)

    सॉर्टेड ऐरे ऐरे जिसमें तत्व क्रमबद्ध क्रम में हों (संख्यात्मक, वर्णानुक्रमिक, आदि)। कई सॉर्टिंग एल्गोरिदम: बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज सॉर्ट, क्विक सॉर्ट, हीप सॉर्ट। सिलेक्शन सॉर्ट अनसॉर्टेड भाग में सबसे छोटा तत्व ढूंढकर उसे शुरुआत से स्वैप करता है। O(n²) समय जटिलता। C++ प्रोग