20172333 2018-2019-1 《程序设计与数据结构》第一周学习总结

学号 2017-2018-2 《程序设计与数据结构》第X周学习总结

教材学习内容总结

第一章

软件工程

1.软件工程是一门关于高质量软件开发的技术和理论的学科。

2.软件开发解决的问题为控制开发过程,实现高质量的软件。(软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。)

3.软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。

4.软件必须有效使用诸如CP处理器时间和内存之类的资源。

5.质量特征必须优先考虑,并可能最大化。

 

 

数据结构

1.数据结构是计算机存储、组织数据的方式

2.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

3.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。

4.数据结构往往同高效的检索算法和 索引技术 有关。 (https://blog.csdn.net/load2006/article/details/78841709)

程序=数据结构+算法

软件=程序+软件工程

第二章

1.算法效率通常用CPU使用时间来表示,算法分析是从效率的角度对算法进行分析,是计算机科学的基础.

2.软件质量的特征之一是资源的使用效率。

3.增长函数表示与该问题大小相对应的时间或空间的使用。增长函数表示问题大小与我们希望最优化的值之间的关系。该函数表示了该算法的时间复杂度或空间复杂度。如果算法的运行效率低。那么从长远来说,使用更快的处理器也无济于事。

4.要分析算法的复杂度,通常需要分析循环的运行。循环的时间复杂度等于循环体的复杂度乘以该循环运行的次数。额分析嵌套循环的复杂度时,必须将内层循环和外层循环都考虑进来。

 

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

  • 问题1:在上面看到了索引技术之后发现自己并没有理解索引技术是什么,于是去百度搜了一下索引技术找到了一篇博客。(https://www.cnblogs.com/zhangxiaolei521/p/6027534.html)
  • 问题1解决方案:

      传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称作磁盘数据库(DRDB: Disk-Resident Database)。磁盘数据库需要频繁地访问磁盘来进行数据的操作,磁盘的读写速度远远小于CPU处理数据的速度,所以磁盘数据库的瓶颈出现在磁盘读写上。
    
      基于此,内存数据库的概念被提出来了。内存数据库(MMDB:Main Memory Database,也叫主存数据库)[1],就是将数据全部或者大部分放在内存中进行操作的数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。

练习

EX 2.1 下列增长函数的阶次是多少?
10n^2+100n+1000
    答:O(n^2)
10n^3-7
    答:O(n^3)
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)
}
    答:内层循环是n/2,外层循环是n,nO(n),所以为O(n^2)。

EX 2.5 请确定下面代码段的增长函数和阶次

for(int count = 0 ; count < n ; count++)
for(int count2 = 1 ; count2 < n ; count2 = count2 * 2)
{
System.out.println(count,count2);
}
}
    答:内层循环是log2n,外层循环是n,nO(log2n)所以为O(nlog2n)。

其他(感悟、思考等,可选)

在家呆了俩月,虽然有做app但还是明显能感觉到自己很多东西已经忘记,新的学期应该更加努力弥补上个学期的懒惰。

参考资料

https://blog.csdn.net/load2006/article/details/78841709

https://blog.csdn.net/load2006/article/details/78841709

posted @ 2018-09-09 21:32  Silver银色  阅读(166)  评论(2编辑  收藏  举报