skiplist跳表 时间复杂度算式
跳表尺寸符号约定:
符号约定
- 元素节点个数N, 层高h,
- 最高层为第h层,节点列表的上一层为第1层
一些提示
因此 层i节点个数为: $N 2^{-i}$
跳表时间复杂度算式
跳表每一层所需步骤
每一层都是有序的,在有序的第i层上进行二分查找 所需要的步骤: $$
层i所需步骤=log(层i节点个数)=log(N 2^{-i}) = logN - i
$$ #### 跳表各层所需总步骤 > 总步骤 为 各层所需步骤之和: $$ \sum_i^h(层i所需步骤 )=\sum_i^h(log(N 2^{-i}) ) = \sum_i^h(logN - i ) =h log(N)- \sum_i^h( i )=h log(N)-\frac{h}{2}(h+1) $$
小结
即 跳表时间步骤为: $h log(N)-\frac{h}{2}(h+1)$ ,其中:N为节点个数,h为层高
$\frac{h}{2}(h+1)$ 是与输入规模N无关的, 且层高h通常不大,可见 跳表时间复杂度为 O(h logN)
0 声望
1 粉丝
推荐阅读
并发执行:串行
A. 多个cas指令恰当的粘接在一起 可以达到 确定的顺序 。这里 恰当的粘接是: 操作cas所用的值序列是递增的或递减的单个cas指令 是原子性的,因为cas是 两条指令合并为一条指令 这条指令就是cas指令 对cpu来说,...
林林阅读 693
Redis的线程模型和事务
我原本只是想学习Redis的事务,但后来发现,Redis和传统关系型数据库的事务在ACID的表现上差异很大。而要想详细了解其中的缘由,就离不开Redis独特的单线程模型,因此本文将二者联系在一起讲解。
KerryWu赞 6阅读 5.9k评论 2
Redis分布式锁的实现
很多新手将 分布式锁 和 分布式事务 混淆,个人理解:锁 是用于解决多程序并发争夺某一共享资源;事务 是用于保障一系列操作执行的一致性。我前面有几篇文章讲解了分布式事务,关于2PC、TCC和异步确保方案的实现...
KerryWu赞 4阅读 6.8k评论 2
详解Redisson分布式限流的实现原理
  我们目前在工作中遇到一个性能问题,我们有个定时任务需要处理大量的数据,为了提升吞吐量,所以部署了很多台机器,但这个任务在运行前需要从别的服务那拉取大量的数据,随着数据量的增大,如果同时...
xindoo赞 3阅读 857
又一款内存数据库横空出世,比 Redis 更强,性能直接飙升一倍!杀疯了
KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能,例如直接备份...
民工哥赞 4阅读 700评论 1
redis 学习笔记
一 搭建 {代码...} 二 数据类型,常用操作命令 {代码...} {代码...} 三 redis常用命令 {代码...} 四 Redis高级应用 {代码...} 五 PHP-REDIS使用 {代码...} 六 BitMap 教程 {代码...}
hufeng赞 2阅读 2.2k
1.5万字总结 Redis 常见面试题&知识点
Redis 是一个基于 C 语言开发的开源数据库(BSD 许可),与传统数据库不同的是 Redis 的数据是存在内存中的(内存数据库),读写速度非常快,被广泛应用于缓存方向。并且,Redis 存储的是 KV 键值对数据。
JavaGuide赞 3阅读 1k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。