# Deleting in a Heap

- Copy the last element to root i.e index 1.
- Shift the root element to last element of heap.
- Set i as 1 (root) and j as 2*i (left child of root).
- Perform the following until j < size - 1.
- Find which of the child is greater.
- Set j to point on that child.
- If the child element (j) is greater than parent element (i), swap them.
- Set i as j and j as 2*j after each iteration.

int deleteFromHeap(int h[], int size) {

// Copy last element to root and first element to last place

int lastElement = h[size];

int firstElement = h[1];

h[1] = lastElement;

h[size] = firstElement;

// Keep i at root and j at left child of root initially

int i = 1, j = 2*i;

while(j < size-1) {

// Find out if left child is greater or right child

if (h[j+1] > h[j])

j = j + 1;

// If child is greater than parent, interchange

if (h[j] > h[i]) {

int temp = h[i];

h[i] = h[j];

h[j] = temp;

// Set i to j and j to left child of j

i = j;

j = 2*j;

} else {

break;

}

}

return firstElement;

}

**By calling the same function n times, heap sort can be implemented.**

Last modified 3yr ago