ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> ### 跳跃表 * 跳跃表的优点是维持结构平衡的成本比较低,完全依靠随机。二叉查找树在多次插入删除后,需要`rebalance`来重新调整结构平衡。 ![](https://i.loli.net/2019/03/29/5c9d794951751.png) > ### 操作节点 * 新节点和各层索引节点逐一比较,确定原链表的插入位置。O(logN) * 把索引插入到原链表。O(1) * 利用抛硬币的随机方式,决定新节点是否提升为上一级索引。结果为“正”则提升并继续抛硬币,结果为“负”则停止。O(logN) * 总体上,跳跃表插入操作的时间复杂度是O(logN),而这种数据结构所占空间是2N,既空间复杂度是 O(N)。 * 删除节点,自上而下,查找第一次出现节点的索引,并逐层找到每一层对应的节点。O(logN)。跳跃表删除操作的时间复杂度是O(logN)。 <br/> <br/> *** 参考: [漫画算法:什么是跳跃表?](http://blog.jobbole.com/111731/) [Redis为什么用跳表而不用平衡树?](https://redisbook.readthedocs.io/en/latest/internal-datastruct/skiplist.html)