1.跳表概念
跳表(skiplist)是一个查询/插入/删除复杂度o(lIgn)的数据结构。 在查询上跟平衡树的复杂度一致,因此是替代平衡树的方案。在redis的zset,leveldb都有应用。
各种平衡树在工业界是广泛应用,帮助我们快速查找,插入数据,但其思想的复杂也让大家不是那么容易接触。跳表为节点设置了快速访问的指针,不同在一个个遍历,可以跨越节点进行访问,这也是跳表的名字的含义。
下面是跳表的数据结构
2.跳表如何构建
当插入一个数据时,随机获得这个节点的高度,每涨一层的概率为p,这个设置,一般为0.25或者0.5,层数越高的节点就越少。
3.如何搜索跳表
如上图所示,我们检索19这个值,遍历路径如下图所示
可以看到高层级的节点相当于一个快速通道,让搜索进行了节点的跳跃,而不是一个个的遍历。