对于实现索引堆中的change方法的理解问题
来源:4-8 索引堆(Index Heap)
软件工程小白菜
2019-01-26
老师您好,在这个方法中,只使用shiftUp不就可以维护最大堆的性质了吗?为什么还需要使用shiftDown?
换句话说,如果只使用shiftUp,不使用shiftDown,最大索引堆的性质会被破坏吗?
谢谢老师
写回答
1回答
-
change的值有可能更大,也有可能更小,有可能要向堆顶移,也可能要向堆底移。所以可能要shiftUp,也可能要shiftDown。
当然,可以通过判断修改值和原值的大小关系来只执行一个操作(shiftUp或者shiftDown),但是课程中的写法是正确的。因为如果修改的值更小,需要shiftDown的话,shiftUp函数不会执行任何操作,然后就可以执行shiftDown了:)
342019-05-06
相似问题