【问题标题】:Why has an unsuccessful search time for a hash table a time complexity Θ(1+α)?为什么哈希表的不成功搜索时间的时间复杂度为 Θ(1+α)?
【发布时间】:2017-07-16 20:12:49
【问题描述】:

我得到 Θ(1) 部分是用于计算哈希表的时间,但我不明白 Θ(α) 部分。

在我看来,时间复杂度是 Θ(n)。假设 α 是预期长度并且表有 m 个槽。为了保证key不在表中,我们需要搜索每个slot,每个slot有α个例外长度,所以总时间是α乘以m,那么就是Θ(n)。

谁能告诉我哪一部分我没有正确理解?

【问题讨论】:

    标签: python algorithm hash hashmap hashtable


    【解决方案1】:

    测试给定键是否在哈希表中不需要测试所有槽。您只需计算给定键 (1) 的哈希值。此哈希值标识密钥必须在哪个槽中,如果它在哈希表中。因此,您只需将该槽中的所有条目 (α) 与给定的键进行比较,得到 Θ(1+α)。您无需查看其他插槽,因为密钥无法存储在任何其他插槽中。

    【讨论】:

    • 谢谢!我想我明白。因此,每个给定的键都在哈希函数中计算,并得到指向某个位置的某个数字。这样,它只需要看这个槽。我说的对吗?
    • 是的,哈希表就是这样工作的。散列函数将键映射到单个槽(即您所说的“位置”)。不同的键可以具有相同的哈希值,即它们被映射到同一个槽(这称为冲突)。因此,您需要将该槽中的所有键与给定键(不是哈希值!)进行比较,以确定它是否确实存在。
    猜你喜欢
    • 2014-11-10
    • 2020-09-11
    • 2019-05-10
    • 2012-05-21
    • 1970-01-01
    • 2011-04-26
    • 2020-11-19
    • 2022-01-09
    • 2013-03-14
    相关资源
    最近更新 更多