哈希算法 冲突处理
Hash算法在处理冲突的时候用的方法有线性探测、 线性补偿探测(就是一下往后一下往前)、拉链法(挂链表)。在已知插入数据规模的情况系,好像用线性探测蛮好的。
那么在线性探测里面有一次位移一次的(但这种容易产生堆聚),也有取平方的。。。一次位移一下的方法肯定是可以完全利用整个哈希表的空间,这没有异议。我的问题是这个平方探测,他是不是也能走遍全部的哈希地址?我自己感觉是不行啦,1.4.9.16.25....不过还有取余运算,所以我也不是很确定。。。
而不管平方探测可行不可行,我们是不是应该考虑溢出的问题,因为通常用来计算哈希表位置的变量都是int,平方到一定大小也要溢出把。。这个时候要不要阻止呢?(如果不阻止,貌似也只是会跑到另一个方向上去,好像也不会怎么滴,)。。。。
我是看视频自学的C语言,没办法请教老师啦。hash这一节也只是一笔带过。我上网搜索,多数博客也只是谈了谈这个冲突解决方案,并没有介绍这个hash表的空间利用率。