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();
}

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).

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site