14-2 关于小数hash问题?

来源:14-2 哈希函数的设计

weixin_慕婉清6533696

2020-12-27

如果按照老师所讲,我将double或者是float中的浮点数按照计算机中的存储方式进行hash的话,那么也就是针对于二进制进行hash计算,这样相当于将其转换为了大正数进行。对此计算过程中的话,那么模的方式应该会存在一些弊端感觉。而且小数本身在计算机中存储就会有一定的问题,有可能做完运算之后导致数据更加失真。个人感觉如果要保证hash函数能够分布均匀且以至于减少冲突,感觉带入到具体问题才能有更好的实践意义。根据具体场景,确定是否使用hash表,其次根据数据本身的一些特点做到有针对性的设计hash函数,感觉更加有意义。
最开始看到小数的时候,第一感觉是放大倍数,然后进行完计算之后再缩小倍数。这样也可以和整数保持一致。
最后波波老师一个大赞,忠实粉丝,2021年的目标就是买完剩下波波老师的课,就差个999了!加油

写回答

1回答

liuyubobobo

2020-12-27

赞思考!:)


不过小数的精度问题,和我们如何给浮点数做哈希运算是没关系的。至于在具体业务的适用范围里,是否根据数字的精度和范围,可以设计出更好的哈希表,确实是可以考量的。


比如如果我们的小数只是表示金额,那么小数点最后最多不过两位,每个小数乘以 100 是很好的策略;


比如如果我们的小数时表示考试成绩,只有可能出现 0.5,那么所有数字乘以 2 就好。


我在课程中提到的方式,是对任意小数可行的一种策略。


==========  


如果你差的是体系课程的话,学完这个课再购买体系课程可能不太值当了。体系课程的数据结构部分和这个课程是基本一致的。体系课程上线的时候,会给每一个购买这个课程的同学一个 299 元的优惠券,相当于可以这个课程退掉,补差价购买体系课程。


如果你已经买了我的其他的算法课程,比如 C++ 的那个算法课程的话,体系课程中的很多内容也在 C++ 课程中有(比如排序算法部分),所以就更不值当了:)


我个人认为如果学习过我的其他课程,没有必要买体系课程了。关于体系课程的一些说明,可以参考这里:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247486023&idx=2&sn=59944e38c23b2a066deade934f62dfb0&chksm=fd8ca501cafb2c17bcb46a7ccedb1b8699c75c8b93a7cea510cb84073a6f734b34c8254ee5af&token=736789215&lang=zh_CN#rd 


谢谢你的支持!继续加油!:)

0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1705 问题

查看课程