数据结构

19 阅读1分钟

跳表

概念

一种查找类型的数据结构,支持数据快速的插入,删除

特征

跳表的空间复杂度OnO(n)以及时间复杂度O(log2n)O(log2n)

基本思想

跳表是一种对于有序链表的改进。一个有序链表的查找操作,从链表的头部开始逐个比较,直到当前节点的值大于或者等于目标节点的值。跳表在有序链表的基础上,引入了 分层 的概念。首先,跳表的每一层都是一个有序链表,特别地,最底层是最初始的有序链表。最简易的其最上元素为两个,从次顶层的元素一直到位于次底层元素其均有两个指针指向。一个指向同层级的后继元素,另一个指向下层级的元素。

跳表的高度与节点之间的关系

假定每两个节点会抽出一个节点作为上一层的索引节点,原始的链表有n个元素。则一级索引则存在的元素的个数为n/2n/2,二级索引元素个数为n/4n/4 ,k 级元素的就存在索引的个数为n/2kn/2^k。最高级索引元素个数为22 个。则跳表的高度h 满足2=n/2k2=n/2^k 即就是h=log2nh=log_{2}n

跳表的应用场景

Hbase的LSM(Log structor Memtable) 以及 redis 中的SortSet

示例说明

  1. 有序链表

image.png

在上述原始链表中检索数据10 ,则需要的迭代遍历链表而后进行对比。其经过的路径为

 1->3->4->5->7->8->9->10

2. 构建该链表的跳表。 1. 第一级 从初始链表中