请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

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

谢谢老师

正在回答

1回答

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


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

3 回复 有任何疑惑可以回复我~
  • 提问者 软件工程小白菜 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-01-27 09:49:00
  • 波波老师您好  是否可以通过对 change传入的值 与原先的值进行比较 如果比原先值小的话 则进行shiftDown操作  反之进行shiftUp操作。  这样逻辑上是否会更加清晰
    回复 有任何疑惑可以回复我~ 2019-05-05 23:04:29
  • 可以:)这个回答的第二段话就是这个意思:)
    回复 有任何疑惑可以回复我~ 2019-05-06 02:35:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信