[数据结构] 跳表

参考博客:https://www.cnblogs.com/cxy2020/p/13799047.html

跳表是基于有序链表,增加了多级索引,并可进行二分查找的有序链表。同时其插入和删除操作性能也不错。

1.存储结构

 

 类似于图上的这种多层结构,在搜索时一级一级进行类似于二分查找的方式。直到定位到具体元素。

2.插入元素

以随机方式决定添加元素的层级。

 

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

3.删除元素

 

 删除很容易理解,即在所有层找到目标元素删除。

4.标准化跳表

每间隔一个元素作为上一层链表的元素。

 

 这样在查找时路径类似于平衡二叉搜索树。当然在实际使用中需要频繁插入时并不适用。

5.总结和比较

跳表查询、插入、删除的时间复杂度都是O(log n)

redis的zset选择跳表的原因:查找区间内所有元素的效率高于红黑树。

posted @ 2022-02-20 18:48  Cheung-10  阅读(9)  评论(0)    收藏  举报