昨天簡介了一下 Heap 的基本知識
今天就來繼續延伸補足
A[i] < A[left(i)]
and/or A i < A[right(i)]
swap(A [i], A [left(i)])
和 swap(A[i], A[right(i)])
,可以解決當前小的 heap 中的 Max heap 問題。swap
maxHeapify(A, N, i) {
l = left[i];
r = right[i];
if (l < N && A[i] < A[l])
largest = l;
else
largest = i;
if (r < N && A[largest] < A[r])
largest = r;
if (largest ≠ i){
swap(A[i], A[largest]);
maxHeapify(A, N, largest);
}
}