标签:heap pre int 考过 length 编程 北大 down 节点
//根节点为1;递归的方式好写
void AdjustDown(int A[], int length, int i) {
if(2i >= length) {
return;
}
int maxChildIdx = 2i;
if(2i+1 < length && A[2i] > A[2i+1]) {
maxChildIdx = 2i+1;
}
if(A[i] >= A[maxChildIdx]) {
return;
}
if(A[maxChildIdx] > A[i]) {
A[0] = A[i];
A[i] = A[maxChildIdx];
A[maxChildIdx] = A[0];
}
AdjustDown(A, length, maxChildIdx);
}
void AdjustHeap(int A[], int length) {
for(int i = length / 2;i > 0; --i) {
AdjustDown(A, length, i);
}
}
标签:heap pre int 考过 length 编程 北大 down 节点
原文地址:https://www.cnblogs.com/vergilwu/p/11687547.html