什么是哈希函数:

哈希函数性质:

1)输入的值是无穷大的,输出的值有限制

2)相同的输入值必得到相等的输出值

3)不同的输出也可能得到相同的输出值(被称为哈希碰撞)

第四条如下:

不管给定多少条数据得到多少条输出值,假如s圈为范围,每一个输入值都相当于在圈内点一个点,当用一个圆随机圈几个时,圆内所包含的点一样

哈希函数使用:

给定一组数据,通过f哈希函数计算得到另一组数据,再同时余上m得到第三组数据,若能保证第二组数据在s域上均匀分布,这在0到m-1上也均匀分布

假设有一个大文件,文件里都是无符号整数(范围0到2^32-1),大文件总共有40亿个,给你1g的内存,给定返回出现数次数最多的是哪个

将所有得数经过哈希函数变换之后,余上100将所有的数的范围控制在0到100之间,再存入哈希表,出现次数最多的就是

哈希表的实现:基于哈希函数

当某个值后面挂的链表超过一定的长度时,根据哈希函数的性质可以确定其它链的长度接近这个值,这是进行扩容,防止之后查询时间过长

每次扩容代驾:若已加入n个字符串,这是经历了logn次,增加n个,代价为o(n*logn)