跳表
概念
一种查找类型的数据结构,支持数据快速的插入,删除
特征
跳表的空间复杂度以及时间复杂度
基本思想
跳表是一种对于有序链表的改进。一个有序链表的查找操作,从链表的头部开始逐个比较,直到当前节点的值大于或者等于目标节点的值。跳表在有序链表的基础上,引入了 分层 的概念。首先,跳表的每一层都是一个有序链表,特别地,最底层是最初始的有序链表。最简易的其最上元素为两个,从次顶层的元素一直到位于次底层元素其均有两个指针指向。一个指向同层级的后继元素,另一个指向下层级的元素。
跳表的高度与节点之间的关系
假定每两个节点会抽出一个节点作为上一层的索引节点,原始的链表有n个元素。则一级索引则存在的元素的个数为,二级索引元素个数为 ,k 级元素的就存在索引的个数为。最高级索引元素个数为 个。则跳表的高度h 满足 即就是。
跳表的应用场景
Hbase的LSM(Log structor Memtable) 以及 redis 中的SortSet
示例说明
- 有序链表
在上述原始链表中检索数据10 ,则需要的迭代遍历链表而后进行对比。其经过的路径为
1->3->4->5->7->8->9->10
2. 构建该链表的跳表。 1. 第一级 从初始链表中