以前一直觉得对于HashTable,如果选用它的模数,应尽量选择素数或质数,但,深入考察这个问题后,觉得这个认识有待商榷
哈希表用途
在哈希表的key,通过散列函数可以与查找位置有接近O(1)的效率时,则哈希表相比较于平衡树型索引数据结构,就获得更高的效率。
其它场景,则需要根据索引类型的不同,进行具体选择评判,利用成熟的关系数据库系统做索引,则是一个很不错的选择!
天下无免费的午餐,在问题出现等概率的情况下,某个解决方案如果有一半适合,则有另外一半是不适合的。
那么面对的key值概率空间,到底是什么样子的呢?
是需要深入考究的问题,是否存在某种模式或规律?!
哈希表的装填因子
float a = records/hashTableLen
直观上来看,当表中填入的记录数一定的情况下, 哈希表的长度越长,装填因子就越小,这样冲突的概率就越小。
具体阐释例子
假设hash表的散列函数,通常使用取模的办法。
如果总共的记录数是char空间最大值,即256,而且记录的key值在char空间中平均分布,则可以看出,如果以哈希表长度来取模,则哈希表的长度决定了冲突程度的大小。
注:
- 哈希表长度也并非无限,特别是
key

最低0.47元/天 解锁文章
957

被折叠的 条评论
为什么被折叠?



