社区
数据结构与算法
帖子详情
关于查找的问题
liuweiwei1
2002-05-13 04:52:54
在一本C语言编程常见问题的书中,提到一种叫做哈希查找的算法,我想请都大家哈希查找的过程是什么?它的作用是什么,它与其它的查找方法有什么区别?多谢了
...全文
26
8
打赏
收藏
关于查找的问题
在一本C语言编程常见问题的书中,提到一种叫做哈希查找的算法,我想请都大家哈希查找的过程是什么?它的作用是什么,它与其它的查找方法有什么区别?多谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hiphop
2002-05-25
打赏
举报
回复
同海星~
liuweiwei1
2002-05-25
打赏
举报
回复
lizhongkun(泛型)
能说清楚一点吗解释一下好吗
加上注释
lizhongkun
2002-05-24
打赏
举报
回复
给你个实例:
viod Countwords (hashTable& table)// 计算文件中单词个数
{ std: string word;
while (cin>>word,!cin.eof())
{
object& obj=table.find (association (*new string(word)));
if (obj .Isfull ())
table.insert(*new association (
*new string (word),*new Counter(1));
else{
association& assoc =dynamic_cast<association&> (obj);
Counter& i= dynamic_cast<Counter&> (assoc.value());
++i;
}//else
}//while
cout<< table<<endl;
}
liuweiwei1
2002-05-23
打赏
举报
回复
还有谁能说说自己的看法吗?
starfish
2002-05-15
打赏
举报
回复
简单来说,hash就是找到一种数据内容和数据存放地址之间的映射关系。比如,由若干字符串要存放到一个哈西表中,希望能够在O(1)的时间内在表中定位某个特定的字符串,我们可以用数组来实现哈西表,找到某种函数sting -> integer,记为 p = f(s),其中p是一个整数,s是一个字符串,p就是字符串s在数组中的下标。这样如果需要在数组中定位s,只要直接根据函数p=f(s)就可以计算s的位置。在哈西表中添加一个字符串也类似,根据字符串的值计算出其应该存放在数组中的位置,然后将字符串放入。但是这种函数(成为哈西函数)很难找,找到一个一一对应的函数几乎不可能,所以经常采用非一一对应的哈西函数。比如对于上面的例子,我们可以设计一个简单的哈西函数,我们设f(s)定义为s的各个字符的Ascii码的和除以n的余数,这里n是我们的数组的长度,我们假设了哈西表中最多需要存储n个元素。但是这个哈西函数有个显而易见的缺点,比如对于字符串s1= "abc"和s2="acb",显然计算出来的哈西函数值都是一样的,但是一个位置上只能存放一个元素,如果先将s1放入哈西表的位置p1,再将s2放入哈西表,这时候因为计算出p2=f(s2) = p1,所以s2应该放置的位置已经被s1占据了,所以就出现了麻烦。这就叫做“冲突”。解决这个冲突的一个简单的办法是,因为p1已经被s1占据,我们就看p1+1,如果该位置为空,则放入s2,否则继续看p1+2,……一直找到一个空位。假设我们将s2放在p1+1,但是这时候要加入s3,而f(s3)恰好等于p1+1,s3的位置又被s2占据了,我们可以继续看p1+2,p1+3……是否为空,直到找到一个空位放入s3,依此类推。在查找s2的时候,我们先根据f(s2)计算出s2应该在p1位置上,然后我们看p1位置上的元素,发现不是s2(该位置上是s1),于是我们继续看p1+1,p1+2,……一直到找到s2,或者到表尾,或者发现一个空位就可以中止了,后两种情况表示s2不在表中。
显而易见,如果冲突发生的太多的话,哈西表的效率会下降。事实上我刚才举的例子中的哈西函数很不好,所以冲突发生的可能性很大。如果找一个比较好的哈西函数,哈西表的效率还是很高的。至于找哈西函数的方法,要根据具体的数据类型和应用场合来分析,也有一些原则,这里就不一一介绍了~~
liuweiwei1
2002-05-13
打赏
举报
回复
能够更详细一点吗
hiphop
2002-05-13
打赏
举报
回复
KEY值的比较。。。。。
flyaramy
2002-05-13
打赏
举报
回复
哈希查找,就类似于查字典,用某个哈希函数使查找关键字与实际内容相对应。
查找
(顺序
查找
,折半
查找
,分块
查找
)
查找
是在查询数据过程中必不可少的一个环节,那么如何来进行
查找
,以及如何进行高效率的
查找
,就是接下来要解决的
问题
。 文章目录
查找
查找
的概念顺序
查找
顺序
查找
-算法原理顺序
查找
-算法实现顺序
查找
-性能分析...
散列表
查找
失败平均
查找
长度
要想知道 散列表
查找
失败的平均
查找
长度,就要知道什么叫做
查找
失败!举个栗子:8个数字 key%11 如下算好了: 散列地址 0 1 2 3 4 5 6 7 8 9 10 关键字 33 1 13 12...
数据结构之静态
查找
表——顺序
查找
、折半
查找
与分块
查找
在非数值运算
问题
中,数据存储量一般很大,为了能在大量信息中找到某些值,就需要用到
查找
技术。而为了提高
查找
效率,就需要对一些数据进行排序。
查找
和排序是两大重要技术,其数据处理量几乎占到数据总处理量的80%...
折半
查找
(二分
查找
)
折半
查找
(二分
查找
) 1、折半
查找
法,也称为二分
查找
法, 二分搜索, 是一种在有序数组中
查找
某一特定元素的搜索算法.搜索过程中从数组的中间元素开始, 如果中间元素正好是要
查找
的元素, 则搜索过程结束;如果某一特定...
关于notepad
查找
时
查找
匹配失效的
问题
解决
关于notepad
查找
时
查找
匹配失效的
问题
解决 如果发现
查找
输入后,无法进行有效的匹配,可以 切换
查找
模式 ,一般是用普通 模式。 有些时候,比如用于替换等,可以使用正则表达式的模式。 ...
数据结构与算法
33,006
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章