इस ट्यूटोरियल में, हम मिन हीप को मैक्स हीप में बदलने के प्रोग्राम पर चर्चा करेंगे।
इसके लिए हमें मिन हीप का एरे प्रतिनिधित्व दिया जाएगा। हमारा कार्य उस दिए गए मिन हीप को 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