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

अनुक्रम में kवां सबसे बड़ा एलिमेंट खोजने के लिए C++ प्रोग्राम


इस प्रोग्राम में, हमें एक अनुक्रम से kवां सबसे बड़ा एलिमेंट निकालने की आवश्यकता है। इस समस्या को मैक्स-हीप का उपयोग करके हल करने पर समय जटिलता में सुधार किया जा सकता है। इस प्रोग्राम की समय जटिलता O(n + k*log n) है।

एल्गोरिदम

शुरुआत    हीप के मैक्स को अनुक्रम के अंत में भेजें।    शेष अनुक्रम को हीपिफाई करें।    प्रक्रिया को 'k' बार दोहराएं।    सरणी की अंतिम स्थिति प्रिंट करें।    kवीं इटरेशन से निकाले गए हीप के मैक्स को परिणाम के रूप में प्रिंट करें। अंत।

उदाहरण कोड

#include <iostream> using namespace std; void MaxHeapify(int a[], int i, int n) {    int j, t;    t = a[i];    j = 2*i;    while (j <= n) {       if (j < n && a[j+1] > a[j])       j = j+1;       if (t > a[j])       break;       else if (t <= a[j]) {          a[j/2] = a[j];          j = 2*j;       }    }    a[j/2] = t;    return; } void Build_MaxHeapify(int a[], int n) {    int i;    for(i = n/2; i >= 1; i--)    MaxHeapify(a, i, n); } int main() {    int n, i, temp, k;       cout<<"\nसॉर्ट किए जाने वाले डेटा एलिमेंट की संख्या दर्ज करें: ";       cin>>n;       n++;       int arr[n];       for(i = 1; i < n; i++) {          cout<<"एलिमेंट "<<i<<": ";          cin>>arr[i];       }      cout<<"\nk मान दर्ज करें: ";      cin>>k;      Build_MaxHeapify(arr, n-1);      for(i = n-1; i >= n-k; i--) {         temp = arr[i];         arr[i] = arr[1];         arr[1] = temp;         MaxHeapify(arr, 1, i - 1);     }     cout<<"\nमैक्स-हीपिफाई के बाद दी गई सरणी "<<k<<" बार सरणी की स्थिति है: ";     for(i = 1; i < n; i++)       cout<<"->"<<arr[i];     cout<<"\n\n"<<k<<"वां सबसे बड़ा एलिमेंट है: "<<arr[n-k];     return 0; }

आउटपुट

सॉर्ट किए जाने वाले डेटा एलिमेंट की संख्या दर्ज करें: 5 एलिमेंट 1 दर्ज करें: 20 एलिमेंट 2 दर्ज करें: 10 एलिमेंट 3 दर्ज करें: 30 एलिमेंट 4 दर्ज करें: 70 एलिमेंट 5 दर्ज करें: 60 k मान दर्ज करें: 2 मैक्स-हीपिफाई के बाद दी गई सरणी 2 बार सरणी की स्थिति है: ->30->20->10->60->70 2वां सबसे बड़ा एलिमेंट है: 60

  1. - C++ प्रोग्राम: तीन संख्याओं में सबसे बड़ी संख्या खोजें

    परिचयतीन संख्याओं में सबसे बड़ी संख्या if स्टेटमेंट का कई बार उपयोग करके पाई जा सकती है। यह एक प्रोग्राम में इस प्रकार दिया गया है - उदाहरण#include <iostream> using namespace std; int main() { int a = 5, b = 1, c = 9; if (a > b) { if (a > c) cout << a &

  1. Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक ऐरे दिया गया है, हमें ऐरे के सबसे बड़े तत्व की गणना करने की आवश्यकता है। यहां हम ब्रूट-फोर्स दृष्टिकोण का उपयोग करते हैं जिसमें हम पूरे लूप को पार करके और तत्व प्राप्त करके सबसे बड़ा तत्व निकालते हैं। हम नीच

  1. पायथन प्रोग्राम: ऐरे में सबसे बड़ा एलिमेंट ढूंढें पायथन प्रोग्राम: ऐरे में सबसे बड़ा एलिमेंट ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट इनपुट के रूप में एक ऐरे दिए जाने पर, हमें ऐरे में सबसे बड़ा एलिमेंट ढूंढने की आवश्यकता है। दृष्टिकोण हम max को पहले एलिमेंट के रूप में इनिशियलाइज़ करते हैं। इसके बाद, हम दिए गए ऐरे