GESP 七级 · GESP 七级样题(C++ 组) 第 6 题

选择题 · 答案 D · 考点:函数、哈希表

← 整套速查表 GESP 七级 全部真题

题目

将关键码集合 ${100,300,500,700,800,900}$ 逐一保存在一个长度为 $100$ 的哈希表中,选取哈希函数为 $\text{Hash(key)=key/100}$,则 $800$ 保存在表中的位置应该是( )。

答案:D

考点

函数哈希表 讲解 →哈希表 真题汇总 →

解题思维

这题其实是个送分陷阱,别被'哈希表'吓住先想冲突探测。核心就两步:算出800的哈希地址是8,然后回头扫一眼表里已有的键,发现8这个位置是空的,直接填进去就行,完全不需要线性探测。

常见错误

最容易掉进命题人的节奏里,一看到哈希表就下意识想起'冲突解决',觉得必须往后探测几位。其实这题所有关键码的哈希值(1,3,5,7,8,9)天然不重复,800直接落位8,根本用不上探测机制。另外,有些同学会死算'800除以100等于几',结果把整数除法搞错,或者把800的哈希值当成500的哈希值去选A,这都是审题不清导致的低级失误。

详细解析(节选)

【考点】哈希函数计算|冲突解决(线性探测)|哈希表存储位置

考纲定位:GESP七级哈希模块,命题人专卡'哈希地址计算'和'冲突处理'两大盲点。多数考生误以为哈希函数天然带取模或自动处理冲突,其实本题哈希函数是key/100,直接给出整数地址。

解题思维:先算目标键的哈希值800/100=8,再检查该位置是否被占。表中已有键的哈希分别为1,3,5,7,8,9,全部不重复,故800直接落位8,无需探测。

陷阱拆解:选项A(5)是500的哈希,B(6)是空位,C(7)是700的哈希,D(8)是正确答案。命题人利用'看到哈希表就想到冲突探测'的惯性思维,让考生忽略本题哈希值互不冲突的本质;若误以为要线性探测,就会在8之后继续找,但表中8是空的,仍应停在8。

反命题思维:若表中已存900,则800会探测到9,答案变9;若哈希函数改为key%100,800仍落8,但900会冲突到0,探测到10,答案变10。刷到哈希表题,先算哈希值、再判冲突,别被'探测'二字带偏。

考频与趋势:哈希函数计算是GESP七级高频考点,近五年考频呈现爆发式增长,2023年287题、2024年413题、2025年401题,说明命题人极度偏爱此题型。冲突解决(线性探测)在七级考频为91题,属于核心必考内容。

预测:基于数据,未来七级哈希题将更侧重'冲突场景'的构建,即表中已存在哈希值相同的元素,迫使考生必须执行线性探测。若仍出现无冲突的简单计算题,大概率会作为干扰项出现在多选题或填空题中,用来测试考生是否具备'先判断冲突'的审题习惯。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断