为什么不使用指针数组来优化链接列表,而使用跳过列表呢?

最近,我正在学习跳过列表,并且我了解到它是为加快链接列表的查找而设计的。但是我想知道为什么不使用基于链表的结构添加所有节点的指针数组的数据结构?对于2^n节点列表,如果每个级别我们都拥有较低级别的指针数量的一半,那么我们将添加2^n-1ponter,几乎等于添加每个节点的指针列表的数量,并且同时它是O(1 )以按索引访问。

一定有一些原因不能实现我的想法,有人可以告诉我吗?

btilly

跳过列表提供O(log(n))了在任何索引处读取,插入,更新和删除元素的平均性能

您的指针数组的想法提供的平均表现O(1)O(n)O(1)以及O(n)用于同样的操作。可以O(n)肯定的是,在操作上有一个很好的常数,但这仍然是它的扩展方式。

两种数据结构都在实践中使用。它们仅用于不同的情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么使用数组而不是链接列表来实现IEnumerable(或IList)?

来自分类Dev

为什么使用数组而不是链接列表来实现IEnumerable(或IList)?

来自分类Dev

为什么要使用链接列表而不是数组或向量实现来实现堆栈或队列?

来自分类Dev

为什么不使用备用元素作为“跳过列表”中的垂直搜索节点?

来自分类Dev

如果尝试花费O(n)的时间对列表进行排序,我们为什么不使用尝试进行排序呢?

来自分类Dev

在链接列表中使用指针

来自分类Dev

为什么不使用查找优化?

来自分类Dev

为什么不使用查找优化?

来自分类Dev

初学者的问题-为什么C使用*来声明指针而不使用&?

来自分类Dev

为什么我的函数仅通过索引而不使用reverse()或[::-1]来反转此列表会给出错误的输出?

来自分类Dev

为什么不使用键的最左侧子集来优化此ORDER BY?

来自分类Dev

为什么不使用指针读取Struct?

来自分类Dev

如何不使用双指针从链接列表中删除最后一个节点

来自分类Dev

使用智能指针的C ++链接列表

来自分类Dev

在链接列表中使用双指针的目的

来自分类Dev

在链接列表中使用相同的指针

来自分类Dev

为什么将列表转换为集合要比仅使用列表来计算列表差异更快?

来自分类Dev

为什么在Javascript中不经常使用链接列表

来自分类Dev

为什么数组列表比LIFO行为的链接列表快?

来自分类Dev

为什么需要双指针来更改头部,而无需更改链接列表中的其他位置

来自分类Dev

使用哈希搜索来搜索链接列表

来自分类Dev

在使用Selenium Webdriver时,为什么我们使用链接列表来收集链接或具有多个匹配项的下拉内容?

来自分类Dev

用函数对数组进行排序而不使用 C 中的指针是行不通的。为什么?

来自分类Dev

使用循环Java创建链接列表的链接列表数组

来自分类Dev

使用循环Java创建链接列表的链接列表数组

来自分类Dev

使用JQuery动态插入列表项会产生与硬编码列表项不同的结果...为什么呢?

来自分类Dev

为什么堆栈使用数组,为什么不使用链表

来自分类Dev

当数组更快时,为什么要使用列表?

来自分类Dev

为什么 C# 列表是使用数组而不是链表实现的

Related 相关文章

  1. 1

    为什么使用数组而不是链接列表来实现IEnumerable(或IList)?

  2. 2

    为什么使用数组而不是链接列表来实现IEnumerable(或IList)?

  3. 3

    为什么要使用链接列表而不是数组或向量实现来实现堆栈或队列?

  4. 4

    为什么不使用备用元素作为“跳过列表”中的垂直搜索节点?

  5. 5

    如果尝试花费O(n)的时间对列表进行排序,我们为什么不使用尝试进行排序呢?

  6. 6

    在链接列表中使用指针

  7. 7

    为什么不使用查找优化?

  8. 8

    为什么不使用查找优化?

  9. 9

    初学者的问题-为什么C使用*来声明指针而不使用&?

  10. 10

    为什么我的函数仅通过索引而不使用reverse()或[::-1]来反转此列表会给出错误的输出?

  11. 11

    为什么不使用键的最左侧子集来优化此ORDER BY?

  12. 12

    为什么不使用指针读取Struct?

  13. 13

    如何不使用双指针从链接列表中删除最后一个节点

  14. 14

    使用智能指针的C ++链接列表

  15. 15

    在链接列表中使用双指针的目的

  16. 16

    在链接列表中使用相同的指针

  17. 17

    为什么将列表转换为集合要比仅使用列表来计算列表差异更快?

  18. 18

    为什么在Javascript中不经常使用链接列表

  19. 19

    为什么数组列表比LIFO行为的链接列表快?

  20. 20

    为什么需要双指针来更改头部,而无需更改链接列表中的其他位置

  21. 21

    使用哈希搜索来搜索链接列表

  22. 22

    在使用Selenium Webdriver时,为什么我们使用链接列表来收集链接或具有多个匹配项的下拉内容?

  23. 23

    用函数对数组进行排序而不使用 C 中的指针是行不通的。为什么?

  24. 24

    使用循环Java创建链接列表的链接列表数组

  25. 25

    使用循环Java创建链接列表的链接列表数组

  26. 26

    使用JQuery动态插入列表项会产生与硬编码列表项不同的结果...为什么呢?

  27. 27

    为什么堆栈使用数组,为什么不使用链表

  28. 28

    当数组更快时,为什么要使用列表?

  29. 29

    为什么 C# 列表是使用数组而不是链表实现的

热门标签

归档