【HBZ分享】java之跳表skip list的原理

跳表skip list特点

  1. 跳表是个右多个层次的链表组成
  2. 跳表是具有顺序的,每一层都有序
  3. 跳表每一层的元素数量都比下一层少一半,即下一层是上一层元素个数的2倍
  4. 搜索时,从第一层开始逐个比较,当比较的元素比当前元素大时候,就继续比较当前层下一个元素,直到找到比较的元素比当前元素小的为止,然后回到上一个元素,通过上一个元素的指针直接跳到下一层该元素的位置开始查找,如此往复,直到找出相等的元素,描述比较抽象,请看下面的解析图 和 纯净图。

解析图:

解析图
纯净图:

在这里插入图片描述

跳表的优缺点

  1. 优点:搜索的时间复杂度可以达到O(LogN)., 比传统的二分搜索树要快得多
  2. 缺点:
    (1). 需要额外的存储空间来存储每一层的指针,而且他的插入和删除操作比较复杂,需要更新多个指针
    (2). 比起单链表,跳表需要存储多级索引,要消耗更多的空间,是空间换时间的思想

跳表应用场景

  1. Redis的Sorted Set使用跳表来实现
    注意:Redis每种数据结构操作,实际上都是基于多种底层数据结构实现的,并不单单是跳表,跳表只是其中的一种而已。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值