You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于二次探测哈希表:字符串Banana%13为何对应位置8和9?

为什么"Banana"会被哈希到位置8和9?
  • 哈希位置不是随便选的,得先计算"Banana"的整体哈希值再对13取余,不是单个字符单独取模。
    常见的字符串哈希逻辑是把所有字符的ASCII值通过累加或加权方式算出一个大整数,再对哈希表大小(13)取余得到初始位置。举两个例子:

    • 简单累加的话,"Banana"的ASCII总和是66+97+110+97+110+97=577,577%13=5,初始位置就是5。
    • 要是用加权哈希(比如基数31这类常用规则),算出来的初始位置可能是其他数值,但核心都是基于整个字符串的哈希值取模。
  • 出现8和9这两个位置,肯定是因为初始计算的位置已经被占用,哈希表启用了冲突解决策略:
    比如最常用的线性探测——如果初始位置被占,就依次往后找下一个空闲位置。假设初始位置是6,被占了就试7,还被占就试8;要是8也被占,就接着试9。这就导致最终落到8或9的位置。

  • 你觉得“可放入任意位置”是误解:
    哈希表插入有严格规则:先通过哈希函数算出初始位置,有冲突就按预设的冲突解决逻辑找下一个空位,绝对不能随便选任意位置放入。只有哈希表全空时,初始位置才是最终位置;有冲突时就按规则往后递推。

内容的提问来源于stack exchange,提问作者Jordan Uhrmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:42:21