HashTable Key vs Value Fetch Complexity

时间:2013-01-19 17:47:16

标签: c++ hashmap hashtable

我刚刚阅读了一个面试问题,该问题要求获取散列密钥与散列值的复杂性。我总是认为两者都是相同的,在O(1 + n / k)(其中k是桶的数量)。我错过了什么?

2 个答案:

答案 0 :(得分:4)

获取散列在键的长度上是O(lk),因为你必须对其进行散列,但n/k应该对任何给定的散列表都是常量。这通常被称为O(1),因为它不依赖n,但它不是严格 O(1),除非密钥大小是固定的。

但是获取散列将需要遍历整个表来查找它,假设您没有预先订购它(您可以设计哈希表,它也可以支持O的二进制查找)( log(n))但这种情况并不常见。)

答案 1 :(得分:2)

哈希值是初始查找位置。如果所需数据未存储在该索引中,则通过迭代获得散列密钥,直到找到所寻找的数据。