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小时

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

七、 参考资料

posted @ 2017-09-10 15:34  张韵琪  阅读(367)  评论(2编辑  收藏  举报