SkipList介绍
1989年发布,随机性链表数据结构。
- 平均空间复杂度:O(n), 最差空间复杂度O(nlogn)
- 平均时间复杂度:O(logn), 最差时间复杂度O(n), 查找,添加,删除
SkipList特性
- 与平衡树相比空间占用会大,但时间复杂度相同,在内存如此便宜的阶段差异不大。
- SkipList实现相对简单,相比平衡树维护平衡方式。
- 区间查找方式要比平衡树更高效率。(指针大于递归)
SkipList应用
- Redis中SortSet数据结构中有SkipList身影。
SkipList结构
type Node struct {
Forward []*Node
Next *Node
Entry *Entry
}
type SkipList struct {
Head *Node
maxLevel uint //最大级别
Lenght uint //链表长度
randP uint //随机种子
}
具体实现代码
https://github.com/xc8801/Data-Structures/tree/master/SkipList
网友评论