20172313 2018-2019-1 《程序设计与数据结构》第一周学习总结
教材学习内容总结
- 第一章 概述
- 软件工程是一门关于高质量软件开发的技术和理论的学科。
- 软件开发解决的问题为控制开发过程,实现高质量的软件。
- 软件必须有效使用诸如CPU时间和内存之类的资源。
- 质量特征必须优先考虑,并可能最大化。

- 数据结构:是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。一般状况下,精心选择的数据结构能够带来更高的运行或者存储效率。数据结构每每同高效的检索算法和索引技术有关。
- 栈可用于颠倒数据集的顺序。
- 队列可用于保持其数据的顺序。

程序=数据结构+算法
软件=程序+软件工程html
第二章 算法分析算法
- 算法效率一般用CPU使用时间来表示,算法分析是从效率的角度对算法进行分析,是计算机科学的基础。
- 增加函数表示与该问题大小相对应的时间或空间的使用。增加函数表示问题大小与咱们但愿最优化的值之间的关系。该函数表示了该算法的时间复杂度或空间复杂度。若是算法的运行效率低。那么从长远来讲,使用更快的处理器也无济于事。
- 要分析算法的复杂度,一般须要分析循环的运行。循环的时间复杂度等于循环体的复杂度乘以该循环运行的次数。额分析嵌套循环的复杂度时,必须将内层循环和外层循环都考虑进来。
- 大O计法:忽略该算法的增加函数中的常量和其余次要项,只保留主项而得出的。
- 一些增加函数及其渐进复杂度




教材中的问题及解决过程
- 问题一:可移植性是软件的质量特征之一,那么Java程序设计语言是如何解决该质量特征的?
- 解决:Java程序设计语言是这样来结局这个问题的:把Java的源代码编译成了字节码,这是一种低级语言,它不是任何特定CPU的机器语言。字节码运行在Java虚拟机上。Java虚拟机是一种解释并执行字节码的软件。所以,至少从理论上讲,任何具备Java虚拟机的系统都能运行Java程序。
- 问题二:在看书的时候,不是很理解对相关的工做量,为何说提升CPU的速度并不必定能提升处理速度。
- 解决:当算法的阶次为常量(即O(1))或线性阶次(即O(n))时,提升CPU速度才会线性提升处理速度。随着算法复杂度的增加,处理器速度的提升对复杂度的影响愈来愈小。
练习题
- EX 2.1
- 下列增加函数的阶次是多少?
- 10n^2+100n+1000
- O(n^2)
- 10n^3-7
- O(n^3)
- 2^n+100n^3
- 2^n
- n^2logn
- O(n^2logn)
- EX 2.4
请肯定下面代码段的增加函数和阶次数据结构
for(int count = 0; count < n; count ++)
for(int count2 = 0; count2 < n; count2 = count2 + 2)
{
System.out.println(count , count2)app
- 内层循环是n/2,外层循环是n,因此为O(n^2)。
- EX 2.5
结对及互评
- 博客中值得学习的或问题:
- 代码中值得学习的或问题:
点评过的同窗博客和代码
其余(感悟、思考等,可选)
在家瘫了一个多月后,终于又回到学校了(笑)。在上个学期有收获,有感慨,有付出,也有回报。暑假里没有了在学校学习的氛围,天然也是懈怠了很多,能力感受到确实有所降低。虽然说在暑期内作了一个小app,但练习量是远远不够的,代码仍是必需要多敲才能熟练运用并掌握。至于博客,显然在暑假内是没有写过的,如今开学,这个习惯仍然要捡起来,坚持下去。在这个学期里要继续努力,更好的提高本身!设计
学习进度条
计划学习时间:10小时htm
实际学习时间:5小时blog
参考资料