跳表的基础

跳表的作用

无需数组查找目标元素-----从头遍历---O(n);

有序数组查找目标元素-----二分查找---O(logn);

链表查找目标元素----------只能从头遍历---O(n);

那么链表要如何实现O(logn)的查找时间复杂度呢-----跳表。

跳表的定义

有序链表+多级索引=跳表

就是一个多级链表

第一层是最底层

跳表的基础_第1张图片

跳表的基础_第2张图片

跳表的时间复杂度

O(logn)

跳表的空间复杂度

O(n)

跳表本质上就是一个空间换时间的数据结构

跳表的实现

跳表内部不再使用next指针指向下一个结点,而是使用指针数组的记录每一个结点的多级链表的下一个结点。

查询

从最顶层开始遍历,找到目标元素在这一次的区间,进入下一次遍历,直到找到元素。

退出遍历都没有找到,则没有。

插入

删除

删除和插入比较复杂的是每一级的结点都要处理。

跳表的增删查时间复杂度和红黑树一样都是O(logn)。

跳表的使用场景

redis的区间查询

你可能感兴趣的:(数据结构)