外观
一句话答案
跳表是多层有序链表,逐层跳跃实现 O(logn) 查找,比红黑树实现简单且范围查询方便。
核心要点
结构: 多层索引链表,上层是下层的子集,从最高层开始查找
为什么 Redis 用跳表不用红黑树: 1.实现简单 2.范围查询方便(遍历链表) 3.并发友好 4.空间可调
时间: 查找/插入/删除 O(logn),空间 O(n)
追问与易错
追问方向:
- 跳表的空间复杂度?
- 跳表并发怎么处理?
- 跳表和平衡树的对比?
易错点:
- ❌ 跳表查找一定是 O(logn)——期望值随机性保证
- ❌ 跳表不能范围查询——链表天然支持
💡 记忆锚点
跳表像书的多级目录:底层是完整内容(全部有序节点),上面一层层是"稀疏索引",查找时从最高层的大目录跳到章节目录再到具体页(逐层下降,O(logn))。Redis用跳表不用红黑树的四个理由:实现简单(链表比树好写好调试)、范围查询天然支持(沿链表走就行)、并发友好(局部锁)、层数可调。