二叉堆及堆排序详解保姆级教程略显罗嗦但保证能看懂
因为前面说过,上滤是将操作节点视为子节点,因此如果发生了数据交换,较大的那个就是父节点(parent_node),下滤则相反,因为操作节点总是被视为父节点,因此如果发生了交换,较大值则一定是左右两个子节点的其中一个(也就是max_node),所以两种方法在进行递归调用的时候,出发位置是不同的。前面说过,一个大根堆,其最大值一定是最上层的根元素,那么,我们只需要将它与数组的最后一位互换,然后将换上去的节点做下滤操作。但是显然,已经不存在什么子树了,因为节点【1】已经是处于树的最底部,无法再下探。