发布时间:2025-01-26 19:55:01 点击量:
HASH GAME - Online Skill Game GET 300
【正文】 哈希表的基本思想 : “一次 ”查找成功。 关键字集合 映射函数 H 地址空间 H(key) ASL的 T(n)=O(1)。 通常设定一个一维数组空间存储记录集合,则H(key)指示数组中的下标。 称这个一维数组为 哈希 (Hash)表 或 散列表 。 称映射函数 H 为 哈希函数 。 H(key)为 哈希地址 什么是哈希表 哈希表 1 一、直接地址法 取关键字或关键字的某个线性函数值为哈希地址 即: H(key) = key 或: H(key) = a* key + b 其中, a, b为常数。 常用的构造哈希 (散列 )函数的方法: 假设关键字集合中的每个关键字都是由 s 位数字组成 (u1, u2, …, u s),分析关键字集中的全体, 并从中提取分布均匀的若干位或它们的组合作为地址。 二、数字分析法 2 四 、折叠法 将关键字分割成位数相同的几部分,然后将这几部分叠加,舍去进位作为哈希地址。 移位叠加 : 将分割之后的每一部分的最低位对齐,然后相加。 间界叠加 : 从一端向令一端沿分割界来回折叠,然后相加 。 三、平方取中法 将 k平方后的中间几位取为哈希地址。 位数由表长决定 3 五、 除留余数法 当关键字 k为整数时,用关键字 除以一个整数 p 所得余数作为哈希的地址。 H(key) = key % p 4 处理冲突的方法 设 hash表的长度为 m,冲突是指 j=H(K) 的位置已有记录, (0≤j≤m1) “处理冲突 ”—— 为 K另找一个 “空 ”的地址 。 一 . 开放地址法 : 哈希表的存储结构: typedef struct { KeyType key; //关键字成员 … ; //其它成员 } elemtype typedef elemtype hashtable[m] ; 5 利用下面的公式求 “下一个 ”地址。 Hi = (H(key) + di ) % m, di是增量序列,