第45页 摘抄一个哈希函数
ziyoudefeng (娜娜,有你生活真幸福~~)
读过 程序设计实践
- 章节名:摘抄一个哈希函数
- 页码:第45页
enum {MULTIPLIER = 31}; /* hash: compute hash value of string */ unsigned int hash(char *str) { unsigned int h; unsigned char *p; for (p = (unsigned char *)str; *p != '\0'; p++) h = MULTIPLIER * h + *p; return h % NHASH; }在这个计算中用到了无符号字符。这样做的原因是, C和C++对于char是不是有符号数据没有给出明确定义。而我们需要散列函数总返回正值。 引自 摘抄一个哈希函数 这里,为什么把NHASH设为素数,不是很懂。作者书里是这样说的:
用素数作为数组的大小,能保证在数组大小、散列的乘数和可能的数据值之间不存在公因子。 引自 摘抄一个哈希函数 这段话作何解释??
48人阅读
ziyoudefeng对本书的所有笔记 · · · · · ·
-
第23页 关于“程序员需要掌握的数据结构和算法”的讨论
每个程序都要依靠算法与数据结构,但很少有程序依赖于必须发明一批全新的东西。即使是很复杂的...
-
第24页 "int main(int argc, char *argv[])" VS "int main(int argc, char **argv)"
"int main(int argc, char *argv[])" VS "int main(int argc, char **argv)" 各位看官,你们...
-
第45页 摘抄一个哈希函数
-
第67页 设计一个库需要考虑哪些东西?--第四章讲的不错
第四章,接口。 自我感觉,这章是到前四章里面最有用的一章。告诉了不少关于自己设计一个库的...
-
第94页 关于排错的一些建议
作为个人的观点,我们倾向于除了为取得堆栈轨迹和一两个变量的值之外不去使用排错系统。这其中...
> 查看全部12篇
说明 · · · · · ·
表示其中内容是对原文的摘抄