| index | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| Value | Root | L0 | R0 | L1 | R1 | L2 | R2 |
HEAP-SORT (A)
- BUILD-MAX-HEAP(A)
- For i < A.length-1 downto 1
- swap(A[0], A[i])
- heap_size --;
- MAX-HEAPIFY(A, 0)
BUILD-MAX-HEAP(A)
- heap_size ← A.length-1
- for i ← ⌊ A.length/2 ⌋ down to 0
- MAX-HEAPIFY(A,i)
MAX-HEAPIFY(A,i)
- l ← left(i)
- r ← righ(i)
- pos ← LargestPos(i, l)
- pos ← LargestPos(pos, r)
- If pos ≠ i
- swap(A[i], A[pos])
- MAX-HEAPIFY(A, pos)
LargestPos (a,b)
- rv ← i
- if b < heap_size
- if(A[b] > A[i]
- rv ← b
- return rv