数据结构与算法简记--redis有序集合实现-跳跃表

跳表


 

定义

为一个值有序的链表建立多级索引,比如每2个节点提取一个节点到上一级,我们把抽出来的那一级叫做索引或索引层。如下图所示,其中down表示down指针,指向下一级节点。以此类推,对于节点数为n的链表,大约可以建立log2n-1级索引。像这种为链表建立多级索引的数据结构就称为跳表。

时间复杂度

插入,查询,删除均为O(logn)

平衡性

插入时使用随机函数确定插入位置来保持平衡以避免复杂度退化

通过一个随机函数,来决定将这个结点插入到哪几级索引中,比如随机函数生成了值 K,那我们就将这个结点添加到第一级到第 K 级这 K 级索引中。

相比红黑树的优势

红黑树和跳表的查询,插入,删除都可做到O(logn)

redis有序集合,有按区间查询的操作,使用跳表可以直接定位到起始位置,然后顺序遍历就可,这一点比红黑树有优势。

原文地址:https://www.cnblogs.com/wod-Y/p/12021330.html