跳跃表

本文介绍了跳跃表的基本概念,它是如何通过多级索引结构来提高有序链表中元素查找速度的方法。文章还讨论了跳跃表在插入和删除操作时的概率调整策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看REDIS相关书籍时,发现有序集合是通过散列表和跳跃表的数据结构来实现的,那么跳跃表是什么鬼,于是查了一下,看了以下链接的文章,并做了下笔记:
http://www.cnblogs.com/acfox/p/3688607.html


一.跳跃表要解决的问题

跳跃表是用于“加速解决有序单链表中元素的速度“的。


二.什么是跳跃表

顾名思议,跳跃表就是跳跃性的查询链表,那如何跳跃呢?首先想到的应该是二分法了,对了,就是利用二分法进行跳跃查询。如下图:
这里写图片描述
上图中建立了L1L2L3L4层,在查询的时候,先查询L4,然后查询L3L2L1,最终找到相应的元素。

其实说白了,就是利用二分法和索引来加快查询;

这个样子查询的时间复杂度是2logn


三. 插入元素和删除元素时,跳跃表的调整

如果说,在插入和删除L1层元素时,需要依次按照规则来调整L2L3L4层,那复杂性可想而知是很大的。

那么,这时就需要利用概率论的相关知识,当在L1层插入元素是,就利用随机函数(50%概率)来判断L2层L3层L4层是否需要插入元素,这样子能很快的调整跳跃表,而且当数据量很大时,这样的调整和理想的调整非常接近。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值