对于下面这个链表

跳跃表通俗直观理解

假如我们要查找元素9,按道理我们需要从头结点开始遍历,一共遍历8个结点才能找到元素9。能否采取某些策略,让我们遍历5次以内就找到元素9呢?请大家花一分钟时间想一下如何实现?

 

想办法使得链表能二分查找,其实这个结构和B+树的思想有类似的地方
跳跃表通俗直观理解

通过这种方法,我们只需要遍历5次就可以找到元素9了(红色的线为查找路径)。

跳跃表通俗直观理解

跳跃表通俗直观理解 

当然,还能在增加一层,

跳跃表通俗直观理解

基于这种方法,对于具有 n 个元素的链表,我们可以采取 ** (logn + 1) 层指针路径的形式就可以实现在 O(logn) 的时间复杂度内,查找到某个目标元素了,这种数据结构,我们也称之为跳跃表跳跃表也可以算是链表的一种变形,只是它具有二分查找的功能。

 

小结

跳跃表的插入与删除至此都讲完了,总结下跳跃表的有关性质:

(1). 跳跃表的每一层都是一条有序的链表.

(2). 跳跃表的查找次数近似于层数,时间复杂度为O(logn),插入、删除也为 O(logn)。

(3). 最底层的链表包含所有元素。

(4). 跳跃表是一种随机化的数据结构(通过抛硬币来决定层数)。

(5). 跳跃表的空间复杂度为 O(n)。

跳跃表 vs 二叉查找树

 

跳跃表通俗直观理解

 

 

对于跳跃表和B+树,面试的时候建议背一个画下来

相关文章:

  • 2021-12-21
猜你喜欢
  • 2021-10-08
  • 2022-12-23
  • 2022-01-03
  • 2022-12-23
  • 2021-05-08
  • 2021-09-07
相关资源
相似解决方案