索引堆插入

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

CHZone

2017-08-29

如果先insert(0,e1),再insert(100,e1)这样(数组中只插入了这两个元素),怎么建堆了?

写回答

1回答

liuyubobobo

2017-08-30

我们的堆在面对相同的元素的时候,不会进行shiftUp操作,所以只有这两个相同元素时,形成的堆是这个样子哦:

   1  (外部索引从0开始,我们的实现插入索引堆后索引从1开始)
  /
101


要注意,索引堆只是索引排列成堆的形态(对应我们的实现代码中的indexes数组),但是具体的数据内容依然在他们自己的索引位置(对应我们的实现代码中的data数组)。如果对这一点理解的不够透彻,建议先继续往下看,在我们学习图的最小生成树和最短路径算法时,都会使用索引堆进行优化。到时候结合索引堆的具体应用,或许会理解的更透彻哦:)


这个课程的所有代码都可以再课程的github中找到。也可以自己亲自用具体的例子实验一下哦:)

https://github.com/liuyubobobo/Play-with-Algorithms



0
6
liuyubobobo
回复
CHZone
恩恩 我们的索引堆是不能将同一个索引的元素重复添加到堆中的。我们在第09小节的代码会添加上这个检查:)
2017-08-30
共6条回复

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

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

11144 学习 · 1611 问题

查看课程