在开放定址法中散列到同一个地址而产生的“堆积”问题,是同义词冲突的探查序列和非同义词之间不同的探查序列交织在一起,导致关键字查询需要经过较长的探测距离,降低了散列的效率。因此要选择好的处理冲突的方法来避免“堆积”。
Ⅰ、采用再散列法处理冲突时不易产生聚集
Ⅱ、采用线性探测法处理冲突时,所有同义词在散列表中一定相邻
Ⅲ、采用链地址法处理冲突时,若限定在链首插入,则插入任一个元素的时间是相同的
Ⅳ、采用链地址法处理冲突易引起聚集现象
若有200个表项要放入散列表,采用线性探测法解决冲突,限定查找成功的平均查找长度不超过1.5,则

K个关键字在依次填入的过程中,只有第一个不会发生冲突,故探测次数为(1+2+3+…+K)=K(K+1)/2,即选D。
在散列表中,平均查找长度与装填因子 α \alpha α直接相关,表的查找效率不直接依赖于表中已有表项个数n或表长m。若散列表中存放的记录全部是某个地址的同义词,则平均查找长度为O(n)而非O(1)。
聚集是因为选取不当的处理冲突的方法,而导致不同关键字的元素对同一散列地址进行争夺的现象。用线性再探测法,容易引发聚集现象。
因为在链地址法中,映射到同一地址的关键字都会链到与此地址相对应的链表上,所以探测过程一定是在此链表上进行的,从而这些位置上的关键字均为同义词;但在线性探测法中出现两个同义关键字时,会把该关键字对应地址的下一个地址也占用掉,两个地址分别记为Addr、Addr+1,查找一个满足H(key)=Addr+1的关键字key时,显然首次探测到的不是key的同义词。
产生堆积现象,即产生了冲突,它对存储效率、散列函数和装填因子均不会有影响,而平均查找长度会因为堆积现象而增大,选D。
采用线性探查法计算每个关键字的存放情况如下表所示。

由于H(key)=0~6,查找失败时可能对应的地址有7个,对于计算出地址为0的关键字key0,只有比较完0~8号地址后才能确定该关键字不在表中,比较次数为9;对于计算出地址为1的关键字key1,只有比较完1~8号地址后才能确定该关键字不在表中,比较次数为8;以此类推。需要特别注意的是,散列函数不可能计算出地址7,因此有

对于任意序列进行基于比较的排序,求最少的比较次数应考虑最坏情况。对于任意n个关键字排序的比较次数至少为 ┌ \ulcorner ┌ log 2 \log_2 log2(n!) ┐ \urcorner ┐。将n=7代入公式,答案为13。