Hello So Im working on a C max heap program and I was wonder
Hello! So I\'m working on a C++ max heap program and I was wondering if someone would be able to help me with the function heapify (function cpp header below). It is suppose to use the vector and it heapifies one subtree and it is not recursive. Thank you in advance!
int MaxHeap::heapifyNode(int) // heapifies one subtree (not recursive)
Solution
#include <iostream>
#include <conio.h>
using namespace std;
void max_heapify(int *a, int i, int n)
{
int j, temp;
temp = a[i];
j = 2 * i;
while (j <= n)
{
if (j < n && a[j+1] > a[j])
j = j + 1;
if (temp > a[j])
break;
else if (temp <= a[j])
{
a[j / 2] = a[j];
j = 2 * j;
}
}
a[j/2] = temp;
return;
}
void build_maxheap(int *a,int n)
{
int i;
for(i = n/2; i >= 1; i--)
{
max_heapify(a,i,n);
}
}
int main()
{
int n, i, x;
cout<<\"enter no of elements of array\ \";
cin>>n;
int a[20];
for (i = 1; i <= n; i++)
{
cout<<\"enter element\"<<(i)<<endl;
cin>>a[i];
}
build_maxheap(a,n);
cout<<\"Max Heap\ \";
for (i = 1; i <= n; i++)
{
cout<<a[i]<<endl;
}
getch();
}
