redis 跳表

跳表于avl比较

跳表:空间换时间

  • 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表
  • 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。
  • 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。

相比于红黑树、平衡二叉树,跳表不仅查找、插入、删除时间复杂度都是O(logN),并且实现简单很多。

 

时间复杂度

单链表查询的时间复杂度为O(n),而插入、删除操作需要先找到对应的位置,所以插入、删除的时间复杂度也是O(n)。

如果按照标准的跳表来看的话,每一级索引减少k/2个元素(k为其下面一级索引的个数),那么整个跳表的高度就是(log n)。

所以,跳表的时间复杂度也是O(log n)。

空间复杂度

我们还是以标准的跳表来分析,每两个元素向上提取一个元素,那么,最后额外需要的空间就是:

n/2 + (n/2)^2 + (n/2)^3 + ... + 8 + 4 + 2 = n - 2

所以,跳表的空间复杂度是O(n)。

 

跳表与AVL

  1.  从算法实现难度上来比较,skiplist比平衡树要简单得多。
  2.  平衡树的插入和删除操作可能引发子树的调整,逻辑复杂,而skiplist的插入和删除只需要修改相邻节点的指针,操作简单又快速。
  3.  查找单个key,skiplist和平衡树的时间复杂度都为O(log n),大体相当。
  4.  在做范围查找的时候,平衡树比skiplist操作要复杂。
  5.  skiplist和各种平衡树(如AVL、红黑树等)的元素是有序排列的。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值