ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: Zamyi

[分享] 哈希表原理和实现

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-12 13:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2018-4-12 08:40
是的。

一场拍卖会中,物品是价高者得,如果每个人只有一次出价机会,同时提交自己的价格后,最后一起 ...

这段时间没见你冒泡,怎的?在研究区块链?

TA的精华主题

TA的得分主题

发表于 2018-4-12 15:46 | 显示全部楼层
http://club.excelhome.net/thread-1407513-1-1.html

也许看看这个代码,你会知道什么是hashtable

对外行谈原理是我的错,还是让你们自己看代码吧。

TA的精华主题

TA的得分主题

发表于 2018-4-12 17:28 | 显示全部楼层
三坛老窖 发表于 2018-4-12 13:54
这段时间没见你冒泡,怎的?在研究区块链?

楼主Zamyi做的,就是利用Excel中引用计算哈希值的API函数,得到一个Long整型范围内的数值。

这个函数类似于密码加密原理,对于同一个字符,总能计算返回完全相同的一个长整型数值。

并且这个函数可以使用事先规定的最大整数值c 进行求余数计算,以便缩小实际使用数组的范围。

…………
接下来,使用最最最最简单的防止碰撞算法(不同的字符串计算得到完全相同的哈希值时的处理方法)
就可以有效地作为一个和Scripting.Dictionary字典完全等效,并且较大个数使用时速度更快的VBA 字典-数组索引的检索方法。

……
这么理解就可以了吧。

虽然也使用了基于哈希表散列函数的部分原理,但确实和真正功能强大的哈希散列算法有着很大的距离。

…………
对于普通VBA编程爱好者来说,意义不是特别大,
但是对于坚持使用Excel表格来计算几十万、几百万数据的要求来说,还是很有价值的、有意义的“高级应用”。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-4-12 18:32 | 显示全部楼层
香川群子 发表于 2018-4-12 17:28
楼主Zamyi做的,就是利用Excel中引用计算哈希值的API函数,得到一个Long整型范围内的数值。

这个函数 ...

的确是不错的工具,我们水平低,只会使用大神们造好的工具。
这大概类似现时很热的python吧,会使用就行。
管他什么语言造的轮子。
使用爽就行。
要我们非专业人士看这些理论,请专家现场讲解都理解费力啊。
教会我们怎么用就阿尼陀佛了。

TA的精华主题

TA的得分主题

发表于 2018-4-12 23:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-4-13 15:26 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-4-13 15:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liucqa 发表于 2018-4-12 15:46
http://club.excelhome.net/thread-1407513-1-1.html

也许看看这个代码,你会知道什么是hashtable

昨晚认真的阅读了链接中的代码,真是令人大开眼界!其中的hashtable就是你想说又说不出来的“真正的哈希表”吧,我的读后感发在链接的帖子中,欢迎你能给予有意义的板砖,内行外行之类的词最好别用,这样没有意义而有损你多年来在EH中树立起来的形象。

点评

你可真逗,我猜你到现在也没看明白我前面几个帖子在说啥。外行看代码,内行看原理。等你到更高一点的层面之后,再看看这些帖子,你会知道我在说啥了。  发表于 2018-4-13 18:44

TA的精华主题

TA的得分主题

发表于 2018-4-13 16:04 | 显示全部楼层
是的目前不能只有我等外行上代码,大家动动手啊。

TA的精华主题

TA的得分主题

发表于 2018-4-14 02:03 | 显示全部楼层
老大:在我回复你57楼的点评之前,我先编一个故事,信不信由你,反正我信了。

话说大约是在上世纪70年代,在中国东北的某一个屯子里,有一位见过世面的智者。
某天,看到有村民在向其他村民分享他制作的馒头并讲解该馒头的制作方法时,智者就说:“这不是真正的食物,真正的食物是要能消化的!”,并从随身携带的包包里拿出一本书,随便翻开到某页,照本宣读了一段众人听了感到莫名其妙的内容。
有村民找到智者所出示的书查看,发觉此书中并无給什么是”真正的食物“下定义,反倒查到馒头是食物之一。
此时有村民向智者咨询:“什么是真正的食物?这个馒头我吃过,能消化的呀“,还有村民指出智者刚才所宣读内容中含糊不清的地方。
智者一看众皆迷惑,进而解说道:”他讲的馒头制作方法早已是成熟技术,无需在此多费口舌“,接着又来了一句:”在我看来,他分享的馒头更像是物质,而非真正的食物“。
此时,有村民发觉智者在说胡话,并笑着提醒他:你有些糊涂了,并指出分享馒头制作方法的必要性和说明所有的食物都是由物质构成的,没有见过非物质的食物。
智者一看竟然有人笑着跟他说话,以为是在嘲笑他,进而勃然发怒,对该村民道:所谓对牛弹琴大概说得就是你这种不在一个频道上的对话了。接着又说了一堆什么量子呀、夸克呀、暗物质呀、引力波呀等等超级前沿的名词,最后语重心长的告诉众人,你们想学技术的心情我理解,但在学技术之前,先得去度娘家学一些基本功。
……

不久后,有村民从国外带回一个面包分享给众村民,智者获知,对众人曰:看看吧,这就是真正的食物。

本不想编这个故事,实在是在VBA平台上找不到与你沟通的频道,所以只能换到编故事平台,但愿能在这个平台上,能与你沟通,并把问题之所在讲清楚。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-14 09:50 | 显示全部楼层
几点看法:
1、   本帖是在回复下面之贴后写的:http://club.excelhome.net/forum.php?mod=viewthread&tid=1401931&page=1#pid9445093,该贴要求查找对应项目,按理用字典是无二选择,但VBScript字典超过10万数目就力不从心,用自定义字典嫌啰嗦,于是用了哈希表处理。随后在论坛搜索,像是从未见过用哈希表直接处理问题的,于是有了此贴。写此贴的目的,就是想说哈希表其实很简单,直接可以写于程序中。后面正如本帖说的,许多人都陌生,再如下面“镜像贴”:http://club.excelhome.net/forum.php?mod=viewthread&tid=1406388&page=6#pid9470067
2、   每种语言都有其算法,算法原理是什么?原理只是描述算法的大概道理,算法才是要考虑到细节,例如快速排序原理:选择一个元素作为比较的基准,将所有元素与基准逐个对比,按所需顺序置于基准的两侧,如升序排列时大的放在基准右侧、小的放在左侧,将整个数据划分为左右两个分区,视左右两个分区为两个单独的待排序数据,递归的重复上述操作,直至分区中元素只有一个。根据这原理才能由算法具体实施。本帖说的原理不浅显么?哈希表要处理的是散列算法和处理“碰撞”(外国人定义的怪异的名词),本帖没做到么!本帖讨论的是哈希表,并非字典,扩容在字典中或者封装在类中是必需的,既然把它看成一个数组,何必要扩容。
3、   “哈希表已经是成熟技术了,所以没必要重复造轮子”,不明白是指哈希表还是字典,哈希表成熟的代码呢?不管你把哈希表吹嘘得那么复杂、那么深奥,在我这里仅仅二三十行代码,比所谓的大牛代码及VBScript字典还节省内存、速度还快,所谓专业计算机颜面何存!
4、   论坛有求助、有解答、有讨论,有分享等等,要是Ctrl+C、Ctrl+V(只要不涉及版权问题),要是有价值的东西,大家还是会感激的。你要如何发言、如何评论,是你的事,但要诋毁他人,嘿嘿!突然起个潮汕的笑话:
爷爷:我很佩服特朗普的爸爸。
孙子:是因为他生了个总统的儿子?
爷爷:不是,因为给儿子起了个好名:特朗普。
孙子:爷爷,特朗普他爸爸也叫特朗普。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-20 16:48 , Processed in 0.045861 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表