【问题标题】:Run Time for Linear Probing on Hash table哈希表线性探测的运行时间
【发布时间】:2011-02-07 19:42:58
【问题描述】:

线性探测插入、删除和搜索的运行时间是多少(大哦)。

谢谢

【问题讨论】:

    标签: hashtable


    【解决方案1】:

    理论上最坏的情况是 O(n),因为如果你碰巧插入了所有元素,使得它们连续碰撞,那么最后插入的元素必须从原始哈希位置开始放入表中 n 步。

    但是,如果您知道输入元素的分布(可能假设是随机的,但当然假设是母亲......),您可以计算平均预期步数,知道您的散列函数的分布(希望是均匀的,但这取决于算法的质量)、哈希表的长度和插入的元素数量。

    如果您的散列函数足够均匀,您可以使用生日问题计算碰撞概率,并根据这些概率计算预期探测长度。

    【讨论】:

    • 你确定吗?如果每次插入都发生碰撞怎么办?然后你必须跳 1 个插槽,然后是 2,然后是 3,......然后是 n。你会有 1 + 2 + 3 + ...n 这给你 O(n^2> 的复杂度,不是吗?
    • 这就是我所说的,线性探测的复杂性是 O(n),这意味着 每个 插入/删除/查找的复杂性是 O(n)。因此,如果你有 n 次插入,那么你的总复杂度是 O(n^2)
    猜你喜欢
    • 2012-04-21
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    相关资源
    最近更新 更多