我对从跳过列表中插入或删除元素所需的时间有点困惑。
假设有一个高度为 H 的跳过列表,每个级别包含 n/2^i 个条目。
n = 键值对总数
i = 跳过列表的级别 i<= H
现在,根据理论,插入操作将执行以下操作
1. 找到一个键 <= 正在插入的键。
2. 插入此键
3. 在基础级别以上的级别中随机创建此条目。
让我们假设 Skip 列表基于链表。
第 1 步:应该取 O(n)。
第 2 步:应该是 O(1)。
第 3 步:应该是 O(log n) 时间。我仍然对这个逻辑感到困惑,它将成为下面问题的一部分
问题
基于上述事实,插入时间不应该是 O(n) + O(1) + O(log n) 吗?忽略低阶项,它应该是 O(n) + O(log n)?
第 3 步再次应该花费 O(n) 时间来搜索要插入的密钥 <= 密钥,然后需要 o(1) 时间来插入。导致非常复杂的插入运行时间?
书上说插入跳过列表需要 O(log n) 时间。我一定错过了一些重要的信息,请你帮我很好地理解这个概念。