OneCompiler

heap#4

1620

#include <iostream>
using namespace std;
#define msz 100

// void swap(int &a, int &b){
// int t = a;
// a = b;
// b = t;
// }

void Maxheapify(int arr[], int n, int i)
{
int lrg = i;
int l = 2i + 1;
int r = 2
i + 2;

if(l <n && arr[l] > arr[lrg]) lrg = l;
if(r <n && arr[r] > arr[lrg]) lrg = r;
if(lrg != i){
    swap(arr[i], arr[lrg]);
    Maxheapify(arr, n, lrg);
}

}

void buildHeap(int arr[], int n)
{
for(int i = n/2 -1; i>= 0 ;i--){
Maxheapify(arr, n, i);
}
}

void deleteRoot(int arr[], int &n)
{
arr[0] = arr[ n - 1];
n--;
buildHeap(arr,n);

}

void printArray(int arr[], int n)
{
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";

}

int main()
{
int n;
cin >> n;

int arr[msz];

for (int i = 0; i < n; ++i)
    cin >> arr[i];

buildHeap(arr, n);
deleteRoot(arr, n);
printArray(arr, n);

return 0;

}