平方探测法处理散列函数冲突

  平方探测法是一种较好的处理冲突的方法,可以避免出现“堆积”问题,它的缺点是不能探测到散列表上的所有单元,但至少能探测到一半单元。下面通过一个例子来理解:

  设Hash函数为 H( key ) = key mod 7,哈希表的地址空间为0,1,...,10,开始时哈希表为空,用平方探测法解决冲突,画出依次插入键值9,14,10,30,56,28后的哈希表和比较次数。

  1.插入键值9,9 mod 7 = 2 ,无冲突,插入,比较一次;

  

  2.插入键值14,14 mod 7 = 0,无冲突,插入,比较一次;

  

  3.插入键值10,10 mod 7 = 3,无冲突,插入,比较一次;

  

  4.插入键值30,30 mod 7 = 2,冲突,2+12=3,有冲突,2-12=1,无冲突插入,比较3次;

   

  5.插入键值56,56 mod 7 = 7,无冲突,插入,比较一次;

   

  6.插入键值28,28 mod 7 = 0,冲突,0+12=1,有冲突,0-12=-1,此时插入到地址10,如果等于-2就插入到地址9,比较次数3次。此时插入全部完成。

   

 

   

posted @ 2018-11-09 22:45  xhanglog  阅读(9209)  评论(0编辑  收藏  举报