(四)算法与数据结构|查找算法|类似二分查找——“跳表”结构

跳表

对数据结构中的数据常见的操作有:查找、插入、删除。有序数组的二分查找操作速度很快,但是插入、删除操作很耗时,并且对内存要求很苛刻。那么有什么数据结构能够做到查找、插入、删除操作速度都很快而且对内存要求不高呢?——答案是:跳表

跳表是什么?即:把有序链表改造位支持“二分查找”算法,这种链表叫做跳表。 跳表的二分查找算法其实是一种“类似二分查找算法”。

跳表是一个各方面性能都比较优秀的“动态数据结构”。可以进行快速的插入、删除、查找操作。代码实现也不复杂。甚至能替代“红黑树”。
时间复杂度:O(logn),空间复杂度:O(n)。

如何实现跳表?

有序链表怎么实现跳表?——》有序链表怎么实现二分查找?——》有序链表怎么实现随机访问?
最终要解决的问题就是:让有序链表可以随机访问。
可以对有序链表建立索引,索引可以放在链表中。从链表的头结点开始,每三个元素取第一个元素放到索引链表中。索引链表的结点中保存了元素值和指向原始链表中值地址的指针。这个索引叫做“一级索引”,可以在一级索引的基础上,在建立二级、三级……索引。这种链表加多级索引的数据结构叫跳表。
如下:
跳表

补充

redis缓存数据库的有序集合(SortedSet)用的就是跳表实现。


END

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值