系列文章目录
这是本周期内系列打卡文章的所有文章的目录
前言
提示:这里可以添加本文要记录的大概内容:
提示:以下是本篇文章正文内容,下面案例可供参考
一、Skiplist是什么?(What)
Skiplist 出现自1989年,由美国计算机科学家 William Pugh 发明的,最早出现在他 1990 年发表的论文《Skip Lists: A Probabilistic Alternative to Balanced Trees》1,俗称“跳表”。典型使用:用来加速链表的查找。复杂度介于常见的查找数据结构:数组、平衡树。
跳表名字的由来,指除了最下层原始链表外,它会产生多层冗余、稀疏的链表。
可以看极客时间视频介绍2快速入门。

跳表是在已有链表的结构上,增加上层索引节点链表,不改变原有的数据结构。在查找场景,数据量很大的情况下,上层链表查找能够跳过大量节点,极大加快查找速度。上述过程类似二分查找,时间复杂度可以降低到O(lnN) (复杂度经过时间证明)。
我们遇到某种业务场景,先是get到功能:如查找。然后就要往经典数据结构上套,能否改造现有数据结构。
Skiplist的基本接口
Skiplist的基本接口,原始文献中已经列出,后续文献有所补充3。我们先从简单的开始:
- search,
- insertion,
- deletion
查找元素
步骤:
插入元素
Skiplist的插入(或者说Skiplist的构造),采用随机层数插入。插入节点,不需要对其他节点的层数进行调整,使得Skiplist的插入性能大大优于传统的平衡二叉树。
步骤:
删除元素
步骤:
二、并行化改造
1.并发查找
2.并发删除
总结
提示:这里对文章进行总结:
跳表对比其他查找数据结构:
| 对比项 | 跳表 | 数组 | 平衡二叉树 |
|---|---|---|---|
| 插入特点 | |||
| 查找 | |||
| 查找时间复杂度 |
参考
William Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Proceedings of the Workshop on Algorithms and Data Structures, Ottawa Canada, August 1989 (to appear in Comm. ACM). ↩︎
文章介绍了Skiplist的基本概念、接口,包括查找、插入和删除操作,并探讨了如何进行并发改造,特别是并发查找和并发删除,以提升性能。Skiplist作为一种概率性数据结构,提供了近似O(logN)的查找复杂度,是链表查找的优化方案。文章还对比了Skiplist与其他查找数据结构如数组和平衡二叉树的差异。

8232

被折叠的 条评论
为什么被折叠?



