如何在Skip-List中搜索元素

时间:2015-05-17 16:41:13

标签: algorithm skip-lists

我正在寻找一种方法来在跳过列表中找到给定的元素x,它是列表中的第k个元素(之前有k-1个元素)。 算法的预期时间应为O(log K)

我找到了已知的算法,它取O(log n),但这里是O(log K)。

提前感谢你

1 个答案:

答案 0 :(得分:1)

您需要扩充跳过列表,以便每个节点都有一个“子树”中元素的计数(元素在其右下方位置,直到其级别中的下一个节点)。

很容易看出,您可以在不改变列表操作复杂性的情况下扩充此信息。

获得此元数据后,您需要进入一个级别,直到下一级别的节点已经远离右侧。此时,请降低一级。

顺便提一下,此问题称为动态订单统计信息扩充。我从未在跳过列表中看过它,但是你可以找到关于如何用其他有序树进行连接的gazoogles,这几乎是一样的想法。