散列表查找的性能分析
散列表的查找过程基本上和造表过程相同。一些关键字可通过散列函数转换的地址直接找到,另一些关键字在散列函数得到的地址上产生了冲突,需要按处理冲突的方法进行查找。在处理冲突的方法中,产生冲突后的查找仍然是给定值与关键码进行比较的过程。所以,对散列表查找效率的量度,依然用平均查找长度来衡量。
查找过程中,关键字的比较次数,取决于产生冲突的多少,产生的冲突少,查找效率就高,产生的冲突多,查找效率就低。因此,影响产生冲突多少的因素,也就是影响查找效率的因素。影响产生冲突多少有以下三个因素:
1. 散列函数是否均匀;
2. 处理冲突的方法;
3. 散列表的装填因子。
散列表的装填因子定义为:α = 填入表中的元素个数 / 散列表的长度
α是散列表装满程度的标志因子。由于表长是定值,α与“填入表中的元素个数”成正比,所以,α越大,填入表中的元素较多,产生冲突的可能性就越大;α越小,填入表中的元素较少,产生冲突的可能性就越小。
通常会将散列表的空间设置的比查找集合大,此时虽然浪费了一定的空间,但会降低产生冲突的可能性,以提升查找效率。