Appearance
题目
下列因素中,影响散列(哈希)方法平均查找长度的是( )。
I. 装填因子
II. 散列函数
III. 冲突解决策略
错因
A
漏掉冲突解决策略 III。同样的装填因子和散列函数下,链地址法(拉链法)和开放定址法的 ASL 完全不同:链地址法的 ASL 是 (成功)量级,开放定址法(线性探测)成功 ASL 是 ,对 更敏感。所以"如何处理冲突"显著影响 ASL,不能略掉。
B
漏掉散列函数 II。一个分布不均匀的散列函数(如对取模值偏离均匀分布)会让大量 key 撞进同一槽,链/簇拉得很长,ASL 飙升。换一个分布均匀的散列函数,同样的装填因子下 ASL 可以低很多。"散列函数好坏" = "冲突频率",直接决定 ASL。
C
漏掉装填因子 I。装填因子 是表满程度的核心指标—— 越大,冲突概率越高,平均探测/比较次数越多。线性探测法的 ASL 在 接近 1 时会急剧恶化(趋近无穷大),因此 是决定散列表性能的首要参数。
总解析
思路:散列表的平均查找长度(ASL)由三件事共同决定。
| 因素 | 为什么影响 ASL |
|---|---|
| I. 装填因子 | 越接近 1,冲突越频繁;公式上 ASL 关于 单调递增,是首要参数 |
| II. 散列函数 | 散列函数决定 key 在表中的分布;分布越均匀 → 冲突越少 → ASL 越低 |
| III. 冲突解决策略 | 拉链法、线性探测、二次探测、双散列等公式不同;同 下 ASL 量级相差明显 |
三者各自从"键碰撞频率"和"碰撞如何处理"两个维度上影响查找过程,任何一个改变都会让 ASL 变化,所以三个因素都影响。
最终答案是 D(I、II、III)。