博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C接口与实现---之三
阅读量:7080 次
发布时间:2019-06-28

本文共 635 字,大约阅读时间需要 2 分钟。

这本书有种相见恨晚,如果在学习数据结构之前看的话,代码的可阅读性肯定会有很大的提升,一直在想一个问题,类似的书为啥国外版的就要好很多,这里并不是一味地的说外国的东西好, 看看这些书的练习体你就知道了,国外的是在教你怎样去思考一个问题,一个问题之后有更多的问题让你思考,而国内C语言相关书的练习题都是抄来抄去。基本还停留在打印一个星星之类。

第三章就是教你怎样写一个更好的hashtable, 针对hash碰撞问题在习题3.1中给出的一方案叫你去验证比较,之后又给了一些可供参考的hash算法。好的一本书就当如此,在不断的叫你思考。

下面来看看书中例子的分散图:
图片描述

其中横坐标表示0-2048的入口,纵坐标表示数组每个入口里面被hash的string,可以看到我们的分布式极不均匀的。理论上10000个string应该是均匀的分布到2048上的,也就是每个入口上有5个左右的字符串。再来看看其对应的直方图:

图片描述

可以看到一半左右的入口是空的。

下面来看看buckets为2039并使用如下的hash函数优化后的效果:

for (h = 0, i = 0; i < len; i++) {    h = (h << 1) + scatter[(unsigned char)str[i]];  }  h &= 0x7fffffff;  h %= NELEMS(buckets);

分散图:

图片描述

对应的直方图:

图片描述

可以看到其符合二项分布的规律,相对于之前的函数分布的要均匀很多。

-END-

转载地址:http://divml.baihongyu.com/

你可能感兴趣的文章
cookie禁用后session id传值的问题
查看>>
android 动画AnimationSet 和 AnimatorSet
查看>>
Dharma勒索软件继续大肆传播,据称已有100多家希腊网站沦陷
查看>>
成为JavaGC专家(1)—深入浅出Java垃圾回收机制
查看>>
Linux学习笔记(十七) vim
查看>>
三十二、iptables filter表小案例、iptables nat表应用
查看>>
Linux第一周学习笔记(4)
查看>>
袋鼠云数据中台专栏2.0 | 数据中台之数据集成
查看>>
当P4遇见NAT64,UCloud如何快速从IPv4向IPv6演进?
查看>>
iOS少用的框架
查看>>
ups锂电池的优势
查看>>
关于程序员和***区别在哪里?
查看>>
tomcat启动报错Invalid character found in method name. HTTP method names must be tokens
查看>>
appium+python3.6
查看>>
RAID cache的作用及更换RAID 电池注意事项
查看>>
如何挖掘和优化长尾关键词?
查看>>
windows下安装解压版mysql
查看>>
Linux启用ssh服务
查看>>
Centos7 Snapper快照备份
查看>>
cdn
查看>>