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

C++ में मिन हीप को मैक्स हीप में बदलना


इस ट्यूटोरियल में, हम मिन हीप को मैक्स हीप में बदलने के प्रोग्राम पर चर्चा करेंगे।

इसके लिए हमें मिन हीप का एरे प्रतिनिधित्व दिया जाएगा। हमारा कार्य उस दिए गए मिन हीप को O(n) समय जटिलता में मैक्स हीप में बदलना है।

उदाहरण

#include<bits/stdc++.h> using namespace std; // दिए गए सबट्री को हीप में बदलना void convert_arrayheap(int arr[], int i, int n){    int l = 2*i + 1;    int r = 2*i + 2;    int largest = i;    if (l < n && arr[l] > arr[i])       largest = l;    if (r < n && arr[r] > arr[largest])       largest = r;    if (largest != i){       swap(arr[i], arr[largest]);       convert_arrayheap(arr, largest, n);    } } // अंत में मैक्स हीप बनाना void convert_maxheap(int arr[], int n){    // सभी नोड एलिमेंट्स को हीपिफाई करना    for (int i = (n-2)/2; i >= 0; --i)    convert_arrayheap(arr, i, n); } // एरे प्रिंट करना void printArray(int* arr, int size){    for (int i = 0; i < size; ++i)    printf("%d ", arr[i]); } int main(){    int arr[] = {3, 5, 9, 6, 8, 20, 10, 12, 18, 9};    int n = sizeof(arr)/sizeof(arr[0]);    printf("Min Heap array : ");    printArray(arr, n);    convert_maxheap(arr, n);    printf("\nMax Heap array : ");    printArray(arr, n);    return 0; }

आउटपुट

Min Heap array : 3 5 9 6 8 20 10 12 18 9 Max Heap array : 20 18 10 12 9 9 3 5 6 8 

  1. C++ में एक रेखा पर अधिकतम बिंदु C++ में एक रेखा पर अधिकतम बिंदु

    मान लीजिए हमारे पास एक 2D तल है। हमें उन अधिकतम बिंदुओं की संख्या ढूंढनी है जो एक ही सीधी रेखा पर स्थित हैं। तो यदि बिंदु इस तरह हैं -तो 4 बिंदु हैंइसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे -n := बिंदुओं की संख्या, यदि n < 3, तो n लौटाएंans := 2i को 1 से n - 1 तक की रेंज मेंcount := 0इं

  1. C++ में मिन हीप में मान x से छोटे सभी नोड्स प्रिंट करना C++ में मिन हीप में मान x से छोटे सभी नोड्स प्रिंट करना

    इस समस्या में, हमें एक मिन हीप और एक मान x दिया गया है और हमें x से छोटे सभी नोड्स प्रिंट करने हैं। मिन हीप मिन हीप एक विशेष प्रकार का बाइनरी ट्री है जिसमें हर नोड का मान उसके चाइल्ड नोड के मान से कम होता है। उदाहरण X = 45 आउटपुट - 2 4 7 10 17 22 33 34 अब, इस समस्या को हल करने के लिए हमें पूरे

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

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