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

C++ में मिन-हीप में kवां सबसे छोटा तत्व


इस ट्यूटोरियल में, हम एक ऐसा प्रोग्राम लिखेंगे जो मिन-हीप से kवां सबसे छोटा तत्व ढूंढता है।

हम इस समस्या को हल करने के लिए प्रायोरिटी क्यू का उपयोग करेंगे। आइए प्रोग्राम पूरा करने के चरण देखते हैं।

  • सही मानों के साथ मिन-हीप इनिशियलाइज़ करें।
  • एक प्रायोरिटी क्यू बनाएं और मिन-हीप का रूट नोड सम्मिलित करें।
  • एक लूप लिखें जो k - 1 बार चले।
    • क्यू से सबसे छोटा तत्व पॉप करें।
    • उपरोक्त नोड के बाएं और दाएं नोड्स को प्रायोरिटी क्यू में जोड़ें।
  • प्रायोरिटी क्यू में सबसे बड़ा तत्व अब kवां सबसे बड़ा तत्व है।
  • इसे वापस करें।

उदाहरण

आइए कोड देखते हैं।

#include <bits/stdc++.h> using namespace std; struct Heap {    vector<int> elemets;    int n;    Heap(int i = 0): n(i) {       elemets = vector<int>(n);    } }; inline int leftIndex(int i) {    return 2 * i + 1; } inline int rightIndex(int i) {    return 2 * i + 2; } int findKthGreatestElement(Heap &heap, int k) {    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>queue;    queue.push(make_pair(heap.elemets[0], 0));    for (int i = 0; i < k - 1; ++i) {       int node = queue.top().second;       queue.pop();       int left = leftIndex(node), right = rightIndex(node);       if (left < heap.n) {          queue.push(make_pair(heap.elemets[left], left));       }       if (right < heap.n) {          queue.push(make_pair(heap.elemets[right], right));       }    }    return queue.top().first; } int main() {    Heap heap(10);    heap.elemets = vector<int>{ 10, 14, 19, 24, 32, 41, 27, 44, 35, 33 };    cout << findKthGreatestElement(heap, 4) << endl;    return 0; }

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम मिलेगा।

24

निष्कर्ष

यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें कमेंट सेक्शन में लिखें।


  1. C++ में मैक्स हीप में न्यूनतम एलिमेंट C++ में मैक्स हीप में न्यूनतम एलिमेंट

    समस्या कथनमैक्स हीप में सबसे कम मान वाला एलिमेंट ढूंढें।नीचे दिए गए मैक्स हीप पर विचार करें।मैक्स हीप में रूट नोड का मान हमेशा उसके बच्चों से अधिक होता है। इस गुण के कारण, हम निष्कर्ष निकाल सकते हैं कि मान लीफ नोड्स में से एक में मौजूद होगा। यदि हीप में n नोड्स हैं तो ceil(n/2) लीफ होंगे।मैक्स हीप ए

  1. - C++ प्रोग्राम: बाइनरी हीप इम्प्लीमेंटेशन

    एक बाइनरी हीप एक पूर्ण बाइनरी ट्री है जो या तो मिन हीप या मैक्स हीप होता है। एक मैक्स बाइनरी हीप में, रूट पर की हीप में मौजूद सभी कीज़ में अधिकतम होनी चाहिए। यह गुण उस बाइनरी ट्री में सभी नोड्स के लिए रिकर्सिवली सत्य होना चाहिए। मिन बाइनरी हीप मिन हीप के समान है। फ़ंक्शन विवरण: void BHeap::Insert(

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

    एक हीप एक पूर्ण बाइनरी ट्री है जो या तो मिन हीप या मैक्स हीप है। एक मैक्स हीप में, रूट पर कुंजी हीप में मौजूद सभी कुंजियों में अधिकतम होनी चाहिए। यह गुण उस बाइनरी ट्री में सभी नोड्स के लिए पुनरावर्ती रूप से सत्य होना चाहिए। मिन हीप मिनहीप के समान है। फंक्शन विवरण void BHeap::Insert(int ele): हीप मे