跳表skip list特点
- 跳表是个右多个层次的链表组成
- 跳表是具有顺序的,每一层都有序
- 跳表每一层的元素数量都比下一层少一半,即下一层是上一层元素个数的2倍
- 搜索时,从第一层开始逐个比较,当比较的元素比当前元素大时候,就继续比较当前层下一个元素,直到找到比较的元素比当前元素小的为止,然后回到上一个元素,通过上一个元素的指针直接跳到下一层该元素的位置开始查找,如此往复,直到找出相等的元素,描述比较抽象,请看下面的解析图 和 纯净图。
解析图:
纯净图:
跳表的优缺点
- 优点:搜索的时间复杂度可以达到O(LogN)., 比传统的二分搜索树要快得多
- 缺点:
(1). 需要额外的存储空间来存储每一层的指针,而且他的插入和删除操作比较复杂,需要更新多个指针
(2). 比起单链表,跳表需要存储多级索引,要消耗更多的空间,是空间换时间的思想
跳表应用场景
- Redis的Sorted Set使用跳表来实现
注意:Redis每种数据结构操作,实际上都是基于多种底层数据结构实现的,并不单单是跳表,跳表只是其中的一种而已。