Kupac (Heap)

Animáció

Struktogram

$heapSort(A : \mathcal{T} [n])$

$buildMaxHeap(A)$
$m := n$
$m > 1$
$m := m - 1$
$swap(A[0], A[m])$
$sink(A,0,m)$

$buildMaxHeap(A: \mathcal{T} [n])$

$k := parent(n - 1) \space downto \space 0$
$sink(A,k,n)$

$sink(A: \mathcal{T} []; k, n : \mathbb{N})$

$i := k$
$j := left(k)$
$b := true$
$j \lt n \land b$

$j + 1 < n \land A[j+1] > A[j]$

$j := j+1$ $\text{SKIP}$

$A[i] < A[j]$

$swap(A[i], A[j])$ $b := false$
$i := j$
$j := left(j)$

Feladatok