最大堆这块,最后一个父节点不应该是length - 2/2么,不是直接除以2吧

来源:12-2 堆排序-代码演示(1)

hualuohuajin

2019-05-26

写回答

2回答

Nick_arron

2019-09-09

按照老师课上讲的,如果最后一层也是满的,父节点和右子节点的关系是 i*2+2,不过最后一层并不一定占满,所以不能用 (length-2)/2;

不过我认为直接 length / 2也是不精确的,比如 0 1 2,只有三个节点时,length/2 = 1.5,这是认为最后一个父节点的索引是1,但实际上是0,不过虽然这里不精确,但因为是循环,所以并没有影响计算结果。


0
0

快乐动起来呀

2019-05-28

那不是最后一个节点,而是最后一层,你看下PPT中有讲,树的节点和层的关系,你再看下

0
0

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程