08 哈希法
冲突、拉链、探测、扩容与 Python 容器
本节 12 题。先独立给出结论和理由,再对照解析;新增题与此前题目统一编号。涉及标签时,标签只表示记录身份。
第 01 题
问题 1
哈希函数和哈希表是什么关系?
第 02 题
问题 2
哈希冲突一定意味着两个键相等吗?
第 03 题
问题 3
容量 5、h(k)=k%5,键 12、7、22 分别进入哪个桶?
第 04 题
问题 4
拉链法如何处理冲突?
第 05 题
问题 5
开放寻址删除槽后,为什么不能总是直接设为从未使用的空槽?
第 06 题
问题 6
装载因子 α 如何定义?容量 8、记录 6 条是多少?
第 07 题
问题 7
扩容后直接复制旧桶编号,是否通常正确?
第 08 题
问题 8
列表能直接作为 Python dict 的键吗?元组一定能吗?
第 09 题
问题 9
若 a==b,正确的哈希实现要求 hash(a) 与 hash(b) 有何关系?
第 10 题
问题 10
把参与哈希/判等的字段在入表后修改,可能有什么问题?
第 11 题
问题 11
dict 的查找复杂度是否永远 O(1)?
第 12 题
问题 12
set 与 dict 的主要接口差异是什么?