20162302 2017-2018-1 《程序设计与数据结构》第一周学习总结
教材学习内容总结
- 很多情况下时间和空间不可兼得。在不同的情况下,要么用时间换空间,要么用空间换时间。
- 引出算法效率的概念,并通过刷盘子的例子来比较不同的算法怎样产生不同的效率。
- 在研究算法的时候,准确的增长函数不如算法的渐进复杂度实用
- 提高CPU的计算速度并不能很好的弥补算法的缺陷
教材学习中的问题和解决过程
- 判断下列代码的增长函数和阶
1 for (int count = 0; count < n; count ++)
2 {
3 for (int count2 = 0; count2 < n; count2 = count2 + 2)
4 {
5 System.out.println (count, count2);
6 }
7 }
首先判断最外层函数执行次数,一共执行了n次有效的以及一次无效的,同理,内层循环也执行了n次有效的以及一次无效的。所以第一行执行了n+1次,套在外层循环里面的第三行执行了n(n+1)次,在最内层的第五行则执行了n^2次。
所以增长函数为n+1+n(n+1)+n2。阶是n2.
代码托管
结对及互评
- 博客中值得学习的或问题:
- 使用了举实例的方法来阐述不同的算法在效率上会有不同的效果的情况。很生动,便于读者的理解。
- 在排版上有点混乱
- 代码中值得学习的或问题:
- 本周没有系统性的代码练习
本周结对学习情况
其他
通过这章的学习我首次接触数据结构相关部分的内容,了解到不同的算法虽然可以达成相同的目的,但是有可能会因为结构上的区别在效率和空间上拉开差距。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 |