DAA - Phương pháp Heapify
Phương thức Heapify sắp xếp lại các phần tử của một mảng trong đó cây con bên trái và bên phải của ith phần tử tuân theo thuộc tính heap.
Algorithm: Max-Heapify(numbers[], i)
leftchild := numbers[2i]
rightchild := numbers [2i + 1]
if leftchild ≤ numbers[].size and numbers[leftchild] > numbers[i]
largest := leftchild
else
largest := i
if rightchild ≤ numbers[].size and numbers[rightchild] > numbers[largest]
largest := rightchild
if largest ≠ i
swap numbers[i] with numbers[largest]
Max-Heapify(numbers, largest)
Khi mảng đã cung cấp không tuân theo thuộc tính heap, Heap được xây dựng dựa trên thuật toán sau Build-Max-Heap (numbers[]).
Algorithm: Build-Max-Heap(numbers[])
numbers[].size := numbers[].length
fori = ⌊ numbers[].length/2 ⌋ to 1 by -1
Max-Heapify (numbers[], i)