在哈希表中,我们一般说插入/查找时间为O(1)。
我读过,只有当使用的散列函数具有恒定时间时,这才是正确的,并且据说恒定时间取决于我们使用的密钥的长度。在某些情况下,插入时间变为 O(k)。
如果编程语言使用 keccak256 或 sha 等哈希函数来确定哈希表中键的 hashCode,那么我同意哈希表中的插入时间可能会超过 O(1)。但我刚刚尝试了 keccak256 长度为 10000 的文本,它是即时的,这就引出了一个问题:长文本的散列如何将插入时间从 O(1) 增加到 O(k) ?我对哈希函数本身没有经验,因此无需解释该部分。只是一个概述解释为什么它是 O(k) 而不是 O(1) 而对于我的长文本来说它是即时的,将不胜感激。