#embrace <bits/stdc++.h>
utilizing
namespace
std;
class
MaxHeap {
int
* arr;
int
maxSize;
int
heapSize;
public
:
MaxHeap(
int
maxSize);
void
MaxHeapify(
int
);
int
mum or dad(
int
i)
{
return
(i - 1) / 2;
}
int
lChild(
int
i)
{
return
(2 * i + 1);
}
int
rChild(
int
i)
{
return
(2 * i + 2);
}
int
removeMax();
void
increaseKey(
int
i,
int
newVal);
int
getMax()
{
return
arr[0];
}
int
curSize()
{
return
heapSize;
}
void
deleteKey(
int
i);
void
insertKey(
int
x);
};
MaxHeap::MaxHeap(
int
totSize)
{
heapSize = 0;
maxSize = totSize;
arr =
new
int
[totSize];
}
void
MaxHeap::insertKey(
int
x)
{
if
(heapSize == maxSize) {
cout <<
"nOverflow: Couldn't insertKeyn"
;
return
;
}
heapSize++;
int
i = heapSize - 1;
arr[i] = x;
whereas
(i != 0 && arr[parent(i)] < arr[i]) {
swap(arr[i], arr[parent(i)]);
i = mum or dad(i);
}
}
void
MaxHeap::increaseKey(
int
i,
int
newVal)
{
arr[i] = newVal;
whereas
(i != 0 && arr[parent(i)] < arr[i]) {
swap(arr[i], arr[parent(i)]);
i = mum or dad(i);
}
}
int
MaxHeap::removeMax()
{
if
(heapSize <= 0)
return
INT_MIN;
if
(heapSize == 1) {
heapSize--;
return
arr[0];
}
int
root = arr[0];
arr[0] = arr[heapSize - 1];
heapSize--;
MaxHeapify(0);
return
root;
}
void
MaxHeap::deleteKey(
int
i)
{
increaseKey(i, INT_MAX);
removeMax();
}
void
MaxHeap::MaxHeapify(
int
i)
{
int
l = lChild(i);
int
r = rChild(i);
int
largest = i;
if
(l < heapSize && arr[l] > arr[i])
largest = l;
if
(r < heapSize && arr[r] > arr[largest])
largest = r;
if
(largest != i) {
swap(arr[i], arr[largest]);
MaxHeapify(largest);
}
}
int
important()
{
MaxHeap h(15);
int
ok, i, n = 6, arr[10];
cout <<
"Entered 6 keys:- 3, 10, 12, 8, 2, 14 n"
;
h.insertKey(3);
h.insertKey(10);
h.insertKey(12);
h.insertKey(8);
h.insertKey(2);
h.insertKey(14);
cout <<
"The present measurement of the heap is "
<< h.curSize() <<
"n"
;
cout <<
"The present most factor is "
<< h.getMax()
<<
"n"
;
h.deleteKey(2);
cout <<
"The present measurement of the heap is "
<< h.curSize() <<
"n"
;
h.insertKey(15);
h.insertKey(5);
cout <<
"The present measurement of the heap is "
<< h.curSize() <<
"n"
;
cout <<
"The present most factor is "
<< h.getMax()
<<
"n"
;
return
0;
}