下列关于散列法处理冲突的叙述中,正确的是()
A.只要线性表不满,线性探查再散列—定能戈到一个空闲位置。
B.只要线性表不满,二次探查再散列一定能找到一个空闲位置。
C.线性探测法的冲突一定是同义词和同义词比较。
D.二次探测法的冲突一定是同义词和同义词比较。
下面对各选项的分析如下:
选...
用户登录可进行刷题及查看答案
选项 A
说法正确。
线性探查再散列:当发生哈希冲突时,按固定步长(通常为 1)依次探测下一个存储单元,直到找到空闲位置或遍历完整个散列表。
关键逻辑:若散列表未填满,且采用开放地址法(如线性探查),则必定存在至少一个空闲位置。由于线性探查会遍历所有可能的位置(循环探测),因此只要表不满,最终总能找到空闲位置。
选项 B
说法错误。
二次探查再散列:步长为一系列平方数(如 ±1², ±2², ±3²,…),其探测范围有限。
局限性:在散列表长度为质数或满足特定条件(如长度为 4k+3 的质数)时,二次探查可以覆盖整个表;但若表长不满足条件,可能出现 “探查到一半无法继续” 的情况(如表长为合数时,可能陷入循环而无法遍历所有位置)。因此,即使表未填满,二次探查也可能无法找到空闲位置。
选项 C
线性探测法的冲突:不仅可能由同义词(哈希值相同的元素)引起,还可能由非同义词的哈希值冲突导致。
例如:散列函数为 H(key)=key%7,若元素 14(H=0)和元素 21(H=0)冲突,属于同义词冲突;若元素 7(H=0)和元素 14(H=0)冲突,也属于同义词冲突。
但如果元素 8(H=1)存入后,元素 15(H=1)冲突,同样是同义词冲突。
误区:冲突的本质是不同元素映射到同一哈希地址,无论是否为同义词,只要哈希值相同就会冲突。因此,线性探测法的冲突可能涉及同义词或非同义词(但实际上,同义词必然哈希值相同,非同义词若哈希值相同则称为 “哈希冲突”,二者在冲突场景中无本质区别)。
结论:选项 C 错误,因冲突不仅限于 “同义词和同义词比较”,而是所有哈希值相同的元素(包括同义词和非同义词)。
选项 D
二次探查法的冲突机制:与线性探测法类似,冲突的根本原因是哈希值相同,与探查方法无关。
举例:若两个非同义词的哈希值相同,采用二次探查法插入时仍会发生冲突。因此,冲突可能涉及同义词或非同义词,选项 D 错误。
最终答案
正确选项:A
登录后提交答案
暂无评论,来抢沙发