首页 新闻 会员 周边

用线性探测法解决冲突建立哈希表并查找

0
悬赏园豆:100 [待解决问题]

输入(从文件中读取):

Data.txt

每行:编号,权重

(1)建立数组,从 “Data.txt” 中读取编号和权重;

(2)从键盘读入 待查找 的权重数值,以除留余数法为哈希函数,线性探测法解决冲突建立哈希表,基于哈希算法从数组中查找相应的记录,计算相应的查找时间,并在屏幕上输出显示。(提示:当前计算机时间 函数 C\C++中参见GetTickCount)。

(3)从键盘读入 待查找 的权重数值,以顺序查找算法从数组中查找相应的记录。计算相应的查找时间,并在屏幕上输出显示。

(4)在实验报告中记录由(2)和(3)查找同一个数时的实验结果。

春暖的主页 春暖 | 初学一级 | 园豆:110
提问于:2012-05-26 16:29
< >
分享
所有回答(2)
0

你的问题是什么?

zsounder | 园豆:2819 (老鸟四级) | 2012-05-28 10:16
0

很简单。

hash方法原理:

    首先把 Data.txt中的 内容以 哈希函数 = 权重/Hash高度 建立 Hash表. 

    查找x权重的时候, 首先通过哈希函数 算出 位置 = x/Hash高度, 算出位置为y,

    则通过Hash表, 可以查出 位置y处的链表,  这链表遍历一下, 取出 权重匹配的节点就出结果了.

    Hash方法 通过 Hash函数定位到 Hash位置相同的 节点, 大大提高了效率.

顺序查找:

   这个由于没排序, 所以for循环就搞定了.

 

 

 

smartfish_liu | 园豆:220 (菜鸟二级) | 2012-06-19 20:50

上述回答有点笔误, Hash函数 = 权重%Hash高度.

 

位置 = x%Hash高度

支持(0) 反对(0) smartfish_liu | 园豆:220 (菜鸟二级) | 2012-06-19 20:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册