哈希方法
哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据惟一且极其紧凑的数值表示形式。若是散列一段明文并且哪怕只更改该段落的一个字母,随后的哈希都将产生不一样的值。要找到散列为同一个值的两个不一样的输入,在计算上是不可能的,因此数据的哈希值能够检验数据的完整性。通常用于快速查找和加密算法。html
哈希函数
哈希表中元素是由哈希函数肯定的。将数据元素的关键字K做为自变量,经过必定的函数关系(称为哈希函数),计算出的值,即为该元素的存储地址。表示为:
Addr = H(key)
方法分为除法算法、折叠算法、平方取中方法、基数转换方法、数字分析方法、长度依赖方法。git
解决冲突
链式方法:拉出一个动态链表代替静态顺序存储结构,能够避免哈希函数的冲突,不过缺点就是链表的设计过于麻烦,增长了编程复杂度。此法能够彻底避免哈希函数的冲突。
开放地址方法:开放地址法有一个公式:Hi=(H(key)+di) MOD m i=1,2,...,k(k<=m-1)其中,m为哈希表的表长。di是产生冲突的时候的增量序列。若是di值可能为1,2,3,...m-1,称线性探测再散列。若是di取1,则每次冲突以后,向后移动1个位置.若是di取值可能为1,-1,4,-4,9,-9,16,-16,...kk,-kk(k<=m/2)称二次探测再散列。若是di取值可能为伪随机数列。称伪随机探测再散列。算法
从哈希表中删除元素
从链表删除、从开放地址实现中删除编程
Java Collection API中的哈希表数据结构
博客中值得学习的或问题函数
代码中值得学习的或问题学习
-20162309
- 结对学习内容
- 课本第20章
- 老师提供在蓝墨云班课的PPT加密
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 11/11 | |
第三周 | 387/387 | 2/3 | 14/25 | |
第五周 | 1232/1619 | 3/6 | 13/38 | |
第七周 | 454/2073 | 4/7 | 11/49 | |
第九周 | 526/2599 | 2/9 | 10/59 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进本身的计划能力。这个工做学习中很重要,也颇有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。设计
参考:软件工程软件的估计为何这么难,软件工程 估计方法htm
计划学习时间:14小时
实际学习时间:10小时