20172320 《程序设计与数据结构》第一周学习总结
教材学习内容总结
第一章 概述
- 软件工程:一门关于高质量软件开发的技术和理论的学科
- 软件质量的特征:正确性,可靠性,健壮性,可用性,可维护性,可重用性,可移植性,运行效率
- 数据结构:计算机存储、组织数据的方式
- 程序=数据结构+算法
软件=程序+软件工程
第二章 算法分析
- 算法分析是计算机科学的基础
- 算法效率通常用CPU的使用时间表示
- 增长函数:表示问题(n)大小与我们希望最优化的值之间的关系。该函数表示了该算法的时间复杂度或空间复杂度
- 渐进复杂度:增长函数的界限,由增长函数的主项确定。渐进复杂度类似的函数,归为相同类型的函数
- 大O记法
- 增长函数的比较
n相对较小时的比较
n相对较大时的比较
-
循环运行的时间复杂度分析:首先确定某个循环体的阶n,然后乘以循环执行的次数
教材中遇到的问题和解决过程‘
- 问题1:可靠性,可用性?
-
问题1解决方案:可用性是关于系统可供使用时间的描述,以丢失的时间为驱动;可靠性是关于系统无失效时间间隔的描述,以发生的失效个数为驱动。在一般情况下,可用性不等于可靠性,只有在没有宕机和失效发生的理想状态下,两者才
是一样的。作业解答
- EX2.1 下列增长函数的阶次是多少?
a.10n^2+100n+1000
b.10n^3-7
c.2^n+100n^3
d.n^2 ·log(n)
解答:a O(n^2)
b O(n^3)
c O(2^n)
d O(n^2*logn) - EX2.4 请确定下面代码段的增长函数和阶次
for(int count = 0 ; count < n ; count++)
for(int count2 = 0 ; count2 < n ; count2 = count2 + 2)
{
System.out.println(count,count2);
}
}
解答:内层循环的次数为n/2,外层为n,增长函数为F(n)=(n^2)/2,阶次是n^2
- EX2.5 请确定下面代码段的增长函数和阶次
for(int count = 0 ; count < n ; count++)
for(int count2 = 1 ; count2 < n ; count2 = count2 * 2)
{
System.out.println(count,count2);
}
}
解答:内层循环的次数为log2(n),外层是n,增长函数是F(n)=nlog2(n),阶次是nlog2(n)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 |