教材学习内容总结
本周学习的内容是算法分析,在暑假时老师给出的视频正好涵盖了这一部分内容,我也正好看到算法分析这一部分。
- 算法效率是决定程序执行速度的一个主要因素。
- 算法复杂度由时间复杂度和空间复杂度两个部分构成。
- 算法效率的提升要优于单纯的处理器运行效率的提升。
如果把一个处理器运行速度提升十倍,n阶时间复杂度的算法可以提升10倍,但是n^2阶的只能提升3.16倍,这个时候时间复杂度低阶的算法明显有更大的提升。更快的处理器不能弥补当问题的大小增大时算法的低效率。 - 时间的增长函数的复杂度表示中,Ω给出增长函数的下界,θ既给出了上界也给出了下界,O给出了下界。
教材学习中的问题和解决过程
- 问题1:在教材P292中第二个算法的的类型跟老师讲的递归那一章节里面求1到n的和我们所谓的简便算法表达式差不多,为什么老师的例子里算法是O(1),而书上的确是O(n^2),是我上课听错了吗?
- 解决方案:跟同学讨论后同学也说老师上课说这种算法是O(1)。讨论后我们认为,老师讲算法的时候是针对于算法本身,求和用递归时与n的规模有关,而用简便算法计算1到n的和时只需要计算一次(1+n)/2xn,算法表达式与n有关,单算法本身不存在循环只需要计算一次,所以算法其实是O(1)的,但是书上只讨论这个求出来的表达式,因为其存在n2,所以是n2阶的。
代码调试中的问题和解决过程
本周只测试运行了第十一章的教材示例部分代码中的Maze类,调试中并没有什么问题。
代码托管
git又出了点问题,正在努力解决中。
上周考试错题总结
-
-第二次考试时没有认真看题,这是一个嵌套的循环,两个变量的赋值并不是并列的,而且这道题不知道a,b的大小,虽然可以达到O(n)的情况 也就是第一个if then不执行的时的情况,但是从全部执行的角度来看他的最高的复杂度是O(n^2)。
-
-这道题里面看着变量赋值里有是2^n,但他的规模还是只和n的大小多少有关。
结对及互评
点评模板:
- 博客中值得学习的问题:
- 博客中项目完整,内容丰富。
- 教材学习一章中写入了大量他认为应该做笔记的内容,可以作为很好的参考与复习资料。
- 用图标直观地区分Ω,θ,O三种复杂度表示方法。
- 代码中值得学习的问题:
- 第一周在本章节无测试代码的情况下仍然自己拓展学习保持大量的代码量,值得学习。
本周结对学习情况
- [20162317](http://www.cnblogs.com/VersionP1/p/7500210.html)
- 结对学习内容
- 我提到的上面教材问题中的算法的复杂度到底是O(n)还是O(1)的问题。
- 书上P296的算法复杂度的判断。
其他(感悟、思考等,可选)
第十二章教材和考试内容和暑假视频里算法分析之前的视频内容关联。暑假时视频只看到那里还是一知半解,老师上课讲了几节课才感觉明白了一点。平日学习光自己看视频打代码还是不行的,不懂的还是要常问。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 66/200 | 1/1 | 6/10 |
-
计划学习时间:10小时
-
实际学习时间:6小时