我刚刚阅读了一个面试问题,该问题要求获取散列密钥与散列值的复杂性。我总是认为两者都是相同的,在O(1 + n / k)(其中k是桶的数量)。我错过了什么?
答案 0 :(得分:4)
获取散列键在键的长度上是O(lk),因为你必须对其进行散列,但n/k
应该对任何给定的散列表都是常量。这通常被称为O(1),因为它不依赖n
,但它不是严格 O(1),除非密钥大小是固定的。
但是获取散列值将需要遍历整个表来查找它,假设您没有预先订购它(您可以设计哈希表,它也可以支持O的二进制查找)( log(n))但这种情况并不常见。)
答案 1 :(得分:2)
哈希值是初始查找位置。如果所需数据未存储在该索引中,则通过迭代获得散列密钥,直到找到所寻找的数据。