কম্পিউটার টিউটোরিয়াল

C++-এ Min Heap কে Max Heap-এ রূপান্তর করা


এই টিউটোরিয়ালে, আমরা Min Heap কে Max Heap-এ রূপান্তর করার প্রোগ্রাম নিয়ে আলোচনা করব।

এখানে আমাদের Min Heap-এর অ্যারে রিপ্রেজেন্টেশন দেওয়া থাকবে। আমাদের কাজ হবে সেই দেওয়া Min Heap কে O(n) টাইম কমপ্লেক্সিটিতে Max Heap-এ রূপান্তর করা।

উদাহরণ

#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);    } } // نهایت Max Heap তৈরি করা void convert_maxheap(int arr[], int n){    // সব নোড এলিমেন্টকে heapify করা    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++-এ একটি রেখায় সর্বোচ্চ পয়েন্ট (Max Points on a Line)

  2. C++-এ মিন হিপে নির্দিষ্ট মান x থেকে ছোট সব নোড প্রিন্ট করা

  3. C++-এ ম্যাক্স হিপ-এ ন্যূনতম এলিমেন্ট বের করা

  4. C++-এ int কে string-এ রূপান্তর (Integer to String)