跳表的作用
无需数组查找目标元素-----从头遍历---O(n);
有序数组查找目标元素-----二分查找---O(logn);
链表查找目标元素----------只能从头遍历---O(n);
那么链表要如何实现O(logn)的查找时间复杂度呢-----跳表。
跳表的定义
有序链表+多级索引=跳表
就是一个多级链表
第一层是最底层
跳表的时间复杂度
O(logn)
跳表的空间复杂度
O(n)
跳表本质上就是一个空间换时间的数据结构
跳表的实现
跳表内部不再使用next指针指向下一个结点,而是使用指针数组的记录每一个结点的多级链表的下一个结点。
查询
从最顶层开始遍历,找到目标元素在这一次的区间,进入下一次遍历,直到找到元素。
退出遍历都没有找到,则没有。
插入
删除
删除和插入比较复杂的是每一级的结点都要处理。
跳表的增删查时间复杂度和红黑树一样都是O(logn)。
跳表的使用场景
redis的区间查询