20162305李昱兴 2017-2018-1 《程序设计与数据结构》第1周学习总结

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

教材学习内容总结

  • 算法:在有限步骤内求解某一问题所使用的一组定义明确的操作序列,能够在有限时间内,对一定的规范的输入获得所要求的输出。
  • 渐进时间复杂度:如果 O(f(n)) 是某个算法的语句执行次数f(n)的上限,那么我们可以说此算法的渐进时间复杂度(简称时间复杂度) 或是执行时间为 O(f(n))。算法的渐进上限即为时间复杂度。
  • 增长函数:表明问题的大小(n)与希望优化的值之间的关系的表达式。
  • 有关算法的效率:
    同一算法:取决于输入量的大小,多慢少快;
    不同算法:不同的区间,算法的速度不同;规模小时,效率接近;规模大时,效率变化明显。
  • 算法 = 数据结构 + 程序。
  • 数据结构三要素:数据的逻辑结构、数据的存储结构和数据的运算。

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

  • 问题1:教材P294,当处理器速度提高10倍时,算法A的复杂度是n2阶,效率提高只达到10的平方根3.16倍,这是为什么?

  • 问题1解决方案:这个问题是我自己想出来的,用自己的语言来简单的解释一下。首先是时间复杂度的定义,如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数,T(n)称为这一算法的“时间复杂度”。现在时间复杂度为n,解决s1问题时需要用时为n,提速以后解决这个问题就需要1/10n,那么它能解决的问题就从s1变成了10s1。时间复杂度为n2时,提速10倍后解决一个问题的时间就变成了根号下n2/10,解决一个问题的时间为n/3.16,,所以提升后能解决的问题就变成了3.16s1。其他情况以此类推,A4的问题王老师已经指出,采用对数运算即可解决。

  • 问题2:算法的时间复杂度实例理解有问题。

  • 问题2解决办法:我看教材P296的代码讲解,知道了这个循环过程的复杂度确定。

代码托管

  • 最近更换了新的电脑,相关的东西还没有配置好,配置好后补发截图。

结对及互评

点评:

  • 博客中值得学习的或问题:
    • 对教材的梳理很细致,可是对知识点的理解可以再多一些。

本周结对学习情况

- [20162306](http://www.cnblogs.com/guominxiaocao/p/7501904.html)
- 结对学习内容
    - 算法分析
    - 梳理教材内容

其他

  • 第一周的学习主要接触了算法这一部分,刚刚学习算法,就对时间复杂度这个概念不是很了解。算法之于代码也是十分重要的一部分,之后的学习更要努力。本周的学习没有写代码,下周的学习,要配置好电脑,将算法和代码多结合起来,坚持做中学。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 100/100 1/1 20/20

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted @ 2017-09-10 18:01  20162305李昱兴  阅读(192)  评论(2编辑  收藏  举报