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

C++ में न्यूनतम हीप को अधिकतम हीप में बदलें

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

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

उदाहरण

#include<bits/stdc++.h>
using namespace std;
//converting a given subtree into a heap
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);
   }
}
//finally building the max heap
void convert_maxheap(int arr[], int n){
   //heapify all the node elements
   for (int i = (n-2)/2; i >= 0; --i)
   convert_arrayheap(arr, i, n);
}
//printing the array
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. सी ++ में एक लाइन पर मैक्स पॉइंट्स

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

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

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

  1. सी ++ में अधिकतम ढेर में न्यूनतम तत्व।

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