DAA - วิธี Heapify

วิธี Heapify จะจัดเรียงองค์ประกอบของอาร์เรย์ใหม่โดยที่แผนผังย่อยด้านซ้ายและด้านขวาของ ith องค์ประกอบเป็นไปตามคุณสมบัติฮีป

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)

เมื่ออาร์เรย์ที่ให้มาไม่เป็นไปตามคุณสมบัติฮีป Heap จะถูกสร้างขึ้นโดยใช้อัลกอริทึมต่อไปนี้ 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)