对于实现索引堆中的change方法的理解问题

来源:4-8 索引堆(Index Heap)

软件工程小白菜

2019-01-26

老师您好,在这个方法中,只使用shiftUp不就可以维护最大堆的性质了吗?为什么还需要使用shiftDown?

换句话说,如果只使用shiftUp,不使用shiftDown,最大索引堆的性质会被破坏吗?

谢谢老师

写回答

1回答

liuyubobobo

2019-01-27

change的值有可能更大,也有可能更小,有可能要向堆顶移,也可能要向堆底移。所以可能要shiftUp,也可能要shiftDown。


当然,可以通过判断修改值和原值的大小关系来只执行一个操作(shiftUp或者shiftDown),但是课程中的写法是正确的。因为如果修改的值更小,需要shiftDown的话,shiftUp函数不会执行任何操作,然后就可以执行shiftDown了:)

3
4
Hurricane_mwb
回复
liuyubobobo
嗯呢~ 一开始没看明白
2019-05-06
共4条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程