关于hash表的时间复杂度
hash就是散列,甚至再散列。但是我一直对hash表的时间复杂度有个疑问。一个需要存储的字符串,通过hash函数散列到一个相对较短的索引,使得存取速度加快。但为什么存取的时间复杂度能达到常量级O(1)呢?? 查找时搜索索引不需要费时间吗?为什么不是O(n)呢? n是hash表的长度
可不可以这样理解:对一个字符串算出hash码后,这个hash码相当于一个指针,就可以直接指向其存储位置,从而是O(1)的时间复杂度。
[解决办法]
我一直是这么认为的,希望是这样
[解决办法]
hash表的桶一般是数组,计算出来的hash值一般是整数,可直接作为数组下标,然后……你懂的
[解决办法]
就是2楼说的这样
[解决办法]
o⑴的原因是离散后,下标对应关键字
[解决办法]
查找索引当然会很快,不过只有无冲突的hash table复杂度才是O(1),一般是O(c),c为哈希关键字冲突时查找的平均长度。
[解决办法]
你可以看看java里面hashmap的实现,里面用的是数组哦