【问题标题】:Hash Table : Search vs successor time complexity哈希表:搜索与后继时间复杂度
【发布时间】:2012-05-21 01:11:06
【问题描述】:

Skiena's book of algorithm design 中,假设哈希表可以有最大的m 桶并且元素总数为n,观察到以下更坏的情况时间复杂度:

搜索:O(n)

继任者:O(n + m)

为什么两者不同?寻找后继者在某种程度上不涉及搜索下一个元素吗?

【问题讨论】:

    标签: algorithm hashtable big-o time-complexity


    【解决方案1】:

    散列以破坏顺序为代价实现恒定时间搜索。当我搜索一个元素时,我对它进行哈希处理 (O(1)) 并查看选择的存储桶(如果我线性扫描,最坏的情况是O(n),因为所有其他存储桶可能都是空的。)

    当我想要给定元素之后的下一个元素时,我无法保证它会在同一个存储桶中。事实上,我根本不知道它在哪里。由于我还不知道继任者是什么,因此我无法对它进行散列以找到它的存储桶。相反,我不得不查看每个存储桶 (O(m).)

    如果我在扫描存储桶时按顺序探测项目,我最终也会对项目数量进行线性工作 (O(n))。这导致总复杂度为O(n + m)

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 2020-11-19
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 2012-03-02
      • 2018-09-14
      相关资源
      最近更新 更多