इस खंड में हम C++ STL में मौजूद हीप डेटा संरचना देखेंगे। यह ढेर में तेजी से इनपुट की अनुमति देता है और किसी संख्या की पुनर्प्राप्ति के परिणामस्वरूप हमेशा सबसे बड़ी संख्या होती है यानी हर बार शेष संख्याओं की सबसे बड़ी संख्या पॉप आउट हो जाती है। ढेर के अन्य तत्वों को व्यवस्थित किया जाता है जो कार्यान्वयन पर निर्भर करता है। हीप ऑपरेशन इस प्रकार हैं -
-
make_heap() - यह एक कंटेनर में एक श्रेणी को एक ढेर में परिवर्तित करता है।
-
सामने () - यह ढेर का पहला तत्व देता है जो सबसे बड़ी संख्या है।
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include<bits/stdc++.h> using namespace std; int main() { vector<int> heap = {33, 43, 53, 38, 28}; make_heap(heap.begin(), heap.end()); cout <<"Top element is : " << heap.front() << endl; }
आउटपुट
Top element is : 53
-
push_heap () - यह तत्व को ढेर में डालने के बाद ढेर को फिर से ढेर करने में मदद करता है। हीप का आकार 1 से बढ़ जाता है। हीप में, नया तत्व उचित रूप से रखा जाता है।
-
pop_heap () - यह ढेर के सबसे बड़े तत्व को हटाने के बाद ढेर को फिर से ढेर करने में मदद करता है। ढेर का आकार 1 से घटाया जाता है। एक तत्व को हटाने के बाद, ढेर तत्वों को तदनुसार पुनर्गठित किया जाता है।
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include<bits/stdc++.h> using namespace std; int main() { vector<int> heap = {33, 43, 53, 38, 28}; make_heap(heap.begin(), heap.end()); cout <<"Top element is : " << heap.front() << endl; heap.push_back(60); push_heap(heap.begin(), heap.end()); cout <<"Top element after insert : " << heap.front() << endl; pop_heap(heap.begin(), heap.end()); heap.pop_back(); cout <<"Top element after deletion : " << heap.front() << endl; }
आउटपुट
Top element is : 53 Top element after insert : 60 Top element after deletion : 53
-
Sort_heap() :यह हीपसॉर्टिंग तकनीक द्वारा हीप एलिमेंट को आरोही क्रम में सॉर्ट करता है।
उदाहरण (C++)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include<bits/stdc++.h> using namespace std; int main() { vector<int> heap = {33, 43, 53, 38, 28}; make_heap(heap.begin(), heap.end()); cout <<"Before Sort : "; for (const auto &i : heap) { cout << i << ' '; } sort_heap(heap.begin(), heap.end()); cout <<"\nAfter Sort : "; for (const auto &i : heap) { cout << i << ' '; } }
आउटपुट
Before Sort : 53 43 33 38 28 After Sort : 28 33 38 43 53
-
is_heap () - इसका उपयोग यह जांचने के लिए किया जाता है कि कंटेनर ढेर है या नहीं। अधिकांश कार्यान्वयन में, रिवर्स सॉर्ट किए गए कंटेनर को हीप के रूप में माना जाता है। यह फ़ंक्शन सही हीप लौटाता है जब यह हीप होता है, अन्यथा झूठा होता है।
-
is_heap_until() - इसका उपयोग इटरेटर को स्थिति में खोजने के लिए किया जाता है जब तक कि कंटेनर हीप न हो।
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include<bits/stdc++.h> using namespace std; int main() { vector<int> heap = {33, 43, 53, 38, 28}; vector<int>::iterator iter; is_heap(heap.begin(), heap.end()) ? cout <<"The is a heap ": cout <<"The is not a heap"; cout << endl; cout < "Heapify" << endl; make_heap(heap.begin(), heap.end()); is_heap(heap.begin(), heap.end()) ? cout <<"The is a heap ": cout <<"The is not a heap"; cout << endl; vector<int>::iterator iter2 = is_heap_until(heap.begin(), heap.end()); cout <<"The heap elements are : "; for (iter=heap.begin(); iter!=iter2; iter++) cout << *iter <<" "; }
आउटपुट
The is not a heap Heapify The is a heap The heap elements are : 53 43 33 38 28