2
void ReheapDown(int* heap, int top, int swpIndx, int numElements) {
int leftChild = 2 * top + 1;
int rightChild = 2 * top + 2;
int minChild;
if (leftChild < numElements) {
// find subscript of smallest child
if (rightChild >= swpIndx || heap[leftChild] < heap[rightChild])
minChild = leftChild;
else
minChild = rightChild;
// if data at top is greater than smallest
// child then swap and continue
if (heap[top] > heap[minChild]) {
swap(heap[top], heap[minChild]);
ReheapDown(heap, minChild, swpIndx, numElements);
}
}
这是一个简单的堆。 ReheapDown部分用于删除堆中的项目。 swpIndx
做什么? (我需要知道做一个家庭作业,我应该写这个函数来删除堆中的某个键。)简单的堆程序 - 这个变量做什么
它只在函数中使用过一次,试图弄清楚'if'在哪里使用... –