[数据结构] 跳表
参考博客:https://www.cnblogs.com/cxy2020/p/13799047.html
跳表是基于有序链表,增加了多级索引,并可进行二分查找的有序链表。同时其插入和删除操作性能也不错。
1.存储结构

类似于图上的这种多层结构,在搜索时一级一级进行类似于二分查找的方式。直到定位到具体元素。
2.插入元素
以随机方式决定添加元素的层级。

如图所示,这里随机得到的结果为2,那么就将元素8插入到0和1两层。
3.删除元素

删除很容易理解,即在所有层找到目标元素删除。
4.标准化跳表
每间隔一个元素作为上一层链表的元素。

这样在查找时路径类似于平衡二叉搜索树。当然在实际使用中需要频繁插入时并不适用。
5.总结和比较
跳表查询、插入、删除的时间复杂度都是O(log n)
redis的zset选择跳表的原因:查找区间内所有元素的效率高于红黑树。
浙公网安备 33010602011771号