20162307 2017-2018-1 《程序设计与数据结构》第1周学习总结
20162307 2017-2018-1 《程序设计与数据结构》第1周学习总结
一、 教材学习内容总结(第十二章 算法分析)
算法效率
- 算法分析的两个主要的任务 = 正确性(不变性✖️单调性)+ 复杂度
- 计算=信息处理 计算模型=计算机=信息处理工具
- 算法就是在特定的计算模型下,只在解决特定问题的指令序列。
- 我认为算法效率就是在尽可能的条件下减少工作时间,提高效率。这样我们可以加快机器的运行时间,所以,在编写程序时,如何运用合适的算法成为了我们共同面临的课题。算法分析是计算机科学的基础课题。
增长函数和大o符号
- 增长函数表明问题大小(n)与希望优化值之间的关系。增长函数显示了与问题大小相关的时间或空间利用率。
- 渐进复杂度称为算法的阶。那么,以书上洗盘子为例,第二种的时间复杂度为n的平方。表示阶的这个记号为O()或big-Oh
- 例如 t(n)=10n+8的复杂度为O(n)。以此类推。
比较增长函数
- 现在,许多时候,处理器速度和内存无法弥补算法效率的差异了。
- 将增长函数进行比较:分析最优解的结构、建立递归关系、计算最优值、用动态规划法求最优解
二、 教材学习中的问题和解决过程
(一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )
-
问题1:上课的时候,在娄老师讲解ppt时,对其中的程序段、频度、时间复杂度,不是很明白
-
问题1解决方案:编了一小段程序进行理解分析,并在网上查找资料,通过运行结果将问题解决
for(d = 0; d < 10; ++d) { for(c = 0; c < 10; ++c) { for(b = 0; b < 10; ++b) { System.out.print("" + b); } System.out.println("" + c); } System.out.println("" + d); }
三、 上周考试错题总结
- Determine the order of the following pseudocode fragment. (确定下面的伪代码片段的阶)
print i + n
A .O(1)
B .O(log n)
C .O(n)
D .O(n2)
E .O(2n)
F .None of the above)
这是一个只执行两个操作的语句(添加和打印)。
- An algorithm of order O(n) is considered faster than an algorithm of order O(n3).(一个为O(n)的算法被认为是比为O(n3)算法快)
A .true
B .false
较小的函数表示更短的时间,这意味着算法更快。值得注意的是,在实践中,一个算法的O(N3)可能更快的一组特定的输入,根据大小的输入和恒定的因素是算法比较。参见图12.2所示的几种重要的引用函数列表,用以表示算法在大符号表示中的顺序。
四、 结对及互评
1、点评模板:
- 博客中值得学习的或问题:结对伙伴错题解释不够详细
2、本周结对学习情况
- 20162303
- 结对学习内容
1.第十二章算法分析
2.研究学习老师上课所讲的ppt
五、 其他(感悟、思考等,可选)
觉得算法对于计算机科学骑着十分重要的作用,它可以加快运行速度,觉得这章有根数学联系
这是新学期的第一周,加油,希望这学期的我可以再接再厉
六、 学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 90/90 | 1/1 | 12/12 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:12小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)