发布时间:2025-01-28 12:55:27 点击量:
HASH GAME - Online Skill Game GET 300
哈希查找 基本概念 学号范围:XX000 ~ XX999 查找学号:17138? • 顺序查找:O(n),平均约比较500次 • 二分查找:O(logn),平均约比较10次 有没有效率更高的算法? 取给定学号的后三位,不需要经过比较,便可 直接从查找表中找到给定学生的记录。 存储地 关键字 址 映射关系 5 哈希函数定义 一般情况下,需在关键字与记录在表中的存储位 置之间建立一个函数关系,以 H(key) 作为关键字为 key 的记录在表中的位置,通常称这个函数h(key) 为 哈希函数。 哈希函数 关键字集合A H(key) 地址空间D m n 6 1) 哈希函数是一个映象,即:将关键字的集合映射 到某个地址集合上,它的设置很灵活,只要这个地 址集合的大小不超出允许范围即可; 7 1) 哈希函数是一个映象,即:将关键字的集合映射 到某个地址集合上,它的设置很灵活,只要这个地 址集合的大小不超出允许范围即可; 2) 由于哈希函数是一个压缩映象,因此,在一般 情况下,很容易产生 “冲突”现象,即: key1 key2 ,而 h(key1) = h(key2)。 8 1) 哈希函数是一个映象,即:将关键字的集合映射 到某个地址集合上,它的设置很灵活,只要这个地 址集合的大小不超出允许范围即可; 2) 由于哈希函数是一个压缩映象,因此,在一般 情况下,很容易产生 “冲突”现象,即: key1 key2 ,而 h(key1) = h(key2)。 3) 很难找到一个不产生冲突的哈希函数。一般情况 下,只能选择恰当的哈希函数,使冲突尽可能少地产 生。 因此,哈希查找需要做两方面事情:选择一个 “好” 的哈希函数;提供一种 “处理冲突”的方法。 9 • 哈希表 根据设定的哈希函数H(key) 和提供的处理 冲突的方法,将一组关键字映象到一个地址 连续的地址空间上,并以关键字在地址空间 中的 “象”作为相应记录在表中的存储位置, 如此构造所得的查找表称之为哈希表。 地址空间存 哈希函数 储的数据集 关键字集合A H(key) 地址空间D m n