插入后查找二叉堆节点的位置

Finding Binary heap node's position after insertion

假设我想将一个节点插入到二叉堆中,我怎样才能找到 插入和堆化后堆中的节点? 二叉堆表示为一个数组。 我需要在 O(log(log(n)) 中找到这个算法。

我知道如何在 log n 复杂度中找到它,但在 log log n 中找不到它。

谢谢大家

让我们看看通常如何插入一个节点。它被附加到数组的末尾,然后与它的父元素交换,直到它到达根或者变得大于或等于它的父元素(我假设我们有一个最小堆)。这就是为什么我们只需要找到这个元素在从它到根的路径中的位置。但是这个路径是排序的(由于堆的属性)。这就是为什么我们可以使用二进制搜索来找到它在这条路径中的位置。路径的长度是O(log n),所以二分查找工作在O(log(log n)).