学习首页/数据结构/哈希表交互演示 · JavaScript

代码与动画 HASH TABLE · CHAINING

哈希表.

根据哈希值定位桶,使用链式结构处理冲突。

期望 O(1) / 最坏 O(n)hash(key) = key % 5演示最多 6 个键

原理与执行逻辑

用哈希函数把键映射到桶,再在桶内查找实际键。不同键可能映射到同一桶,当前实现通过桶内条目列表处理冲突。

执行步骤

  1. 用 key % 5 计算桶号。
  2. 写入时在桶内查找同键条目,存在则覆盖值,否则追加新条目。
  3. 查询时定位桶,再比较桶内实际键。
  4. 删除时移除同键条目,其他冲突条目保留。

关键理解

哈希值相同不代表键相同,必须在桶内二次比较。桶固定为五个,大量键集中到同一桶时,操作会退化为线性扫描。

简短示例

键 1 与 6 都映射到桶 1,可以同时保存;查询 6 时需跳过键 1,再找到键 6 的值。

代码与执行动画

STEP 0 / 0
哈希表
const buckets = [[], [{ key: 1, value: 12 }, { key: 6, value: 25 }], [{ key: 2, value: 38 }], [], []];
1 行 · 0 个片段标记
hash(key) = key % 53 个键
0桶1桶1:12key:value6:25key:value2桶2:38key:value3桶4桶
当前数据正在操作已访问 / 命中标记 / 指针
0

当前结构

选择操作,观察对应代码和状态变化。

操作当前结构

下一次操作使用上次完成后的数据。重置结构恢复初始示例。

值和键:1 至 99;位置从 0 开始。

实现说明

哈希表的操作规则

使用五个桶和链式冲突处理。相同键更新原值,不增加条目;固定桶数下大量冲突会退化为线性扫描。

对应题目与扩展练习

观察执行过程后,按题目约束调整输入、返回值与实现。链接打开官方题目页面。