学号 20162309《程序设计与数据结构》第1周学习总结
教材学习内容总结
本周的学习内容是算法分析,这在计算机运行数据较大的时候能够快速提高运算效率,这也是计算机科学的一门基础课程。算法的过程包括算法的具体内容会直接影响到计算机的运行速度和运行效率。在学习教材的过程中,课本首先以一个函数为例,介绍了一些函数和一些数学建模在解决计算机问题时的应用,用一个具体可见的实例解释了算法分析的抽象概念。然后引入了增长函数,将整个算法的结构扩大到了一个立体的层次。增长函数显示了与问题大小相关的时间或空间的利用率。解释关于算法分析的较为详细的内容:算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。且算法是一组有穷规则,一般要经过设计、确认、分析、编码、测试、调试、计时等阶段。
算法的基本计算方法:![](http://images2017.cnblogs.com/blog/1066526/201709/1066526-20170910174301944-272423555.png)
由此可见,在算法分析中算法的阶是一个很重要的概念。算法的阶给出了算法增长函数的上界,且算法的阶是由算法增长函数的主项决定,这里就需要使用O符号可以表示阶数,也表示其复杂度。
教材上也给出了关于长函数和大O符号的相关内容,大O符号(Big O notation)是用于描述函数渐进行为的数学符号。更确切地说,它是用另一个(通常更简单的)函数来描述一个函数数量级的渐近上界。在数学中,它一般用来刻画被截断的无穷级数尤其是渐近级数的剩余项;在计算机科学中,它在分析算法复杂性的方面非常有用。大O符号可以较为方便地表示阶数。
教材学习中的问题和解决过程
- 问题1:关于比较增长函数,处理器的快慢无法弥补问题大小增大时算法的低效率。
- 问题1解决方案:用数学方法解释,关于一般的函数的n值是较大的,则函数值的差距会变得很大,增长函数之间的差异也会越来越明显,通过书本上的引例可以得出线性语句的阶数和复杂度不会因为语句的变化而变化。
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1及原因,理解情况
1.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)
结对及互评
本周内容较少,主要是概念理解,和20162313苑洪铭同学对教材内容进行了讨论,学习了关于大O符号和增长函数相关方面的知识。
其他(感悟、思考等,可选)
本周是新学期的第一次程序课,紧接着上学期的内容进行,本周学习了算法分析,算是程序内涵及程序本质的内容了,较上学期的内容来看开始逐渐深入,由一些具象的东西变得抽象,需要对概念进行更深入的了解,总结和反思变得尤为重要,同时也是打好扎实基础的必进之路。
xxx
xxx
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 60/200 | 2/2 | 20/20 |
学习时间:16h