在数组中查找节点的位置(作为二进制堆)

时间:2016-05-27 19:36:18

标签: arrays algorithm data-structures binary-heap

假设我想将一个节点插入二进制堆,如何在插入和堆积之后找到表示堆中的节点的索引? 我需要在O(log(log(n))中找到这个算法。

谢谢大家。

1 个答案:

答案 0 :(得分:2)

如果你看一下二进制堆中的插入,新节点就放在最后,然后向上移动他的分支以找到合适的位置。

因此,如您所知,堆的大小,您知道将在哪个分支中插入新节点。分支大小是log(n)。从这个位置,您还可以找到属于该分支的所有节点。

你所要做的就是沿着这个分支进行二进制搜索,你会在log(log(n))中找到新节点的位置。