发布时间:2025-04-29 10:05:13 点击量:
HASH GAME - Online Skill Game GET 300
哈希表又称散列表,实际上就是一个数组。 哈希函数是一个用来求存储在哈希的关键字 在哈希表的地址下标的函数. 比如一个哈希表 int hashtable[5]; 现在有下面 4 个数要存入到哈希表中: (3,15,22,24) 给定一个哈希函数 : H(k)=k % 5 最终数据存储如下图: 理想情况下,哈希函数在关键字和地址之间建立了一个一一对应关系,从而使得查找只需一次计算即可完成。由于关键字值的某种随机性,使得这种一一对应关系难以发现或构造。因而可能会出现不同的关键字对应一个存储地址。即 k1≠k2,但 H(k1)=H(k2),这种现象称为冲突。 把这种具有不同关键字值...
哈希表又称散列表,实际上就是一个数组。 哈希函数是一个用来求存储在哈希的关键字 在哈希表的地址下标的函数. 比如一个哈希表 int hashtable[5]; 现在有下面 4 个数要存入到哈希表中: (3,15,22,24) 给定一个哈希函数 : H(k)=k % 5 最终数据存储如下图: 理想情况下,哈希函数在关键字和地址之间建立了一个一一对应关系,从而使得查找只需一次计算即可完成。由于关键字值的某种随机性,使得这种一一对应关系难以发现或构造。因而可能会出现不同的关键字对应一个存储地址。即 k1k2,但 H(k1)=H(k2),这种现象称为冲突。 把这种具有不同关键字值而具有相同哈希地址的对象称“同义词”。 在大多数情况下,冲突是不能完全避免的。这是因为所有可能的关键字的集合可能比较大,而对应的地址数则可能比较少。 对于哈希技术,主要研究两个问题: (1)如何设计哈希函数以使冲突尽可能少地发生。 (2)发生冲突后如何解决。 哈希函数的构造方法: 构造好的哈希函数的方法,应能使冲突尽可能地少,因而应具有较好的随机性。这样可使一组关键字的散列地址均匀地分布在整个地址空间。根据关键字的结构和分布的不同,可构造出许多不同的哈希函数。 1.直接定址法 直接定址法是以关键字 k 本身或关键字加上某个数值常量 c 作为哈希地址的方法。该哈希函数 H(k)为: H(k)=k+c (c0) 这种哈希函数计算简单,并且不可能有冲突发生。当关键字的分布基本连续时,可使用直接定址法的哈希函数。否则,若关键字分布不连续将造成内存单元的大量浪费。