如何理解跳表
-
跳表:基于二分思想的链表
- 二分查询适用于数组,支持随机访问
- 同样适用于红黑树场景
-
什么是跳表
- 有序的单链表查询时间复杂度仍然是O(n)
- 跳表就是利用额外的空间,建立链表索引
\
用跳表查询有多快
-
单链表的时间复杂度是O(n)
-
跳表的时间复杂度为O(logn),通过牺牲空间复杂度得到的 空间复杂度O(n)
- 在存储对象很大时,索引空间很微小
高效的动态插入和删除
- 插入和删除的时间复杂度O(logn)\
跳表索引动态更新
-
如果不采用高效的更新手段,跳表会退化成单链表
- 红黑树,AVL树的平衡二叉树,左旋和优选保持树大小
-
通过随机函数决定节点插入到几级索引中
- 随机生成k
总结
- 相较于红黑树,跳表增加了范围查询
- 跳表的代码比红黑树会更简洁