假设"第一个元素"在数组中的索引为 0 的话,则父节点和子节点的位置关系如下:
索引为i的左孩子的索引是 (2*i+1);
索引为i的右孩子的索引是 (2*i+2);
索引为i的父结点的索引是 floor...添加
假设在最大堆[90,80,70,60,40,30,20,10,50]种添加85,需要执行的步骤如下:
?...当堆已满的时候,添加失败;否则data添加到最大堆的末尾。然后通过上调算法重新调整数组,使之重新成为最大堆。
2....删除
假设从最大堆[90,85,70,60,80,30,20,10,50,40]中删除90,需要执行的步骤如下:
?...当堆已经为空的时候,删除失败;否则查处data在最大堆数组中的位置。找到之后,先用最后的元素来替换被删除元素;然后通过下调算法重新调整数组,使之重新成为最大堆。