第十一周学习总结

20162315 2017-2018-1 《程序设计与数据结构》第11周学习总结

教材学习内容总结

本周的教材学习内容是学习第二十章-哈希方法的内容。

  • 哈希方法

    哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。

  • 哈希函数

    在哈希方法中,元素保存在哈希表中,元素在表中的位置由哈希函数决定。虽然知道数据集就有可能发现理想的哈希函数,但是我们不需要哈希函数如此完美以获得哈希表的好性能。我们的目标仅仅是寻找一个函数,它能合理地将元素散列到表中以避免冲突。教材上提到了以下建立哈希函数的方法:除法方法,折叠方法,平方取中方法,基数转换方法,数字分析方法。长度依赖方法。

  • 理想哈希函数:每个元素映射到表中唯一位置的哈希函数称为理想哈希函数。

  • 处理冲突的链式方法中,将哈希表看成是集合的表而不是各独立单元的表。

  • 处理冲突的开放地址方法,即在表中寻找不同于钙元素初次哈希看到的另一个开放的位置。

教材学习中的问题和解决过程

-问题1:书上教材中提到:“如果关键字是社会保障码:987-65-4321”,可以将它们分为3段:987,654和321“将它们想加得到1962.假定我们想要一个3位的关键字,此时可以再使用除法或是抽取方法得到需要的下标”,我对这一段文字的疑惑是为什么要将三个分段的号码加起来,得到的下标又是做什么的?

  • 问题1解决方法:我在网上查阅了更多的信息之后有了一些思考:折叠算法的意义是把将数据的表示压缩,而哈希表中数据的位置由下标表示出来,所以要保证下标有唯一性,除法方法中不同的数据除以同一个数I(比如表长),会得到不同的余数(余数可以表示下标值),这样我们就可以得到这些关键字的不同的下标。

代码调试中的问题和解决过程

  • 我在实现

代码托管

gvIZn.png

上周考试错题总结

  • 上周本课程无网上测试

学习进度条

| | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|
| -------- | :----------------😐:----------------😐:---------------: |:-----😐
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 66/200 | 1/1 | 6/10 | |
|第二三周|370/400|2/3|12/18|
|第四五周|400/800|2/5|24/42|
|第六七周|800/1600|3/8|36/54|
|第八九周|1400/3000|2/10/|22/76|
|第十周|600/3600|3/13|12/88|
|第十一周|500|4100|1/14|10/98|

  • 计划学习时间:10小时

  • 实际学习时间:10小时

posted @ 2017-11-19 20:11  162315  阅读(172)  评论(0编辑  收藏  举报