跳跃表(skip list)是一个有序链表,通过多个**"快速通道"**层级进行增强。高层级节点会跳过许多节点,因此搜索会向下并向右移动,实现 O(log n) 期望时间复杂度——这是平衡树的一种概率性的、更简单的替代方案。
结构
text
L3: head ------------------------> 30 -------> NIL
L2: head ----------> 17 ---------> 30 -------> NIL
L1: head ----> 9 --> 17 --> 25 --> 30 --> 42 -> NIL
L0: head -> 3->9->12->17->25->30->39->42 ----> NIL (full list)
每个节点以概率 p(通常为 0.5)被提升到更高的层级,因此平均而言每一层的节点数是其下方层级的一半。
搜索
text
search(25): start top-left, move RIGHT while next <= target,
else drop DOWN a level. Repeat to level 0.
python
