20172321 《程序设计与数据结构》第一周学习总结

20172321 《程序设计与数据结构》第一周学习总结

教材学习内容总结

第一章 概述

1.1 软件质量java

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

1.2 数据结构算法

  • 数据结构是计算机存储、组织数据的方式。
  • 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。一般状况下,精心选择的数据结构能够带来更高的运行或者存储效率。
  • 经常使用结构

第二章

2.1 算法效率分析数据结构

  • 算法效率一般用==CPU的使用时间==表示
  • 算法分析是从效率的角度对算法进行分类

2.2 增加函数与大O记法函数

  • 增加函数表示与该问题大小相对应的时间或者空间的使用。该函数表示了该算法的事件复杂度或空间复杂度。
  • 渐进复杂度称为算法的阶次。主要关注随着问题大小的增长时增加函数的通常性质,这一性质取决于该表达式的主项,即n增长时表达式中增加最快的那一项。
  • 大O记法

2.3 增加函数的比较学习

  • 处理器提速10倍后能处理的问题大小的增长倍速

  • n相对较小时

  • n很大时

2.4 时间复杂度分析.net

  • 循环的时间复杂度等于循环体的复杂度乘以该循环运行的次数
for (int count = 0; count < n; count++)
{
  // 复杂度为O(1)的步骤系列
}
  • 分析嵌套循环的复杂度时,必须将内层循环和外层循环都考虑进来
for (int count = 0; count < n; count++)
    for (int count2 = 0; count2 < n; count2++)
    {
        //复杂度为O(1)步骤系列
    }

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

问题:书上第15页说,在算法复杂度中使用对数时,基本上是指以2为底的对数,那么特殊状况通常出如今何时呢。
解答:其实我主要是想知道特殊状况以后剩下的都是基本状况了。设计

教材习题做答

  • EX2.1 下列增加函数的阶次是多少?
    • a.10n^2+100n+1000
    • 解:O(n^2)
    • b.10n^3-7
    • 解:O(n^3)
    • c.2^n+100n^3
    • 解:O(2^n)
    • d.n^2 ·logn
    • 解:O(n^2 ·logn)
    • 这道题和书上图2.2的例题基本同样。
  • EX2.4 请肯定下面代码段的增加函数和阶次:code

    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,因此阶次为O(n^2)。
  • EX 2.5:请肯定下面代码段的增加函数和阶次:blog

    for(int count = 0 ; count < n ; count++)
        for(int count2 = 1 ; count2 < n ; count2 = count2 * 2)
        {
            System.out.println(count,count2);
        }
    }
    • 解:这段代码能够看出是嵌套循环,内层循环的循环次数是logn,外层循环的循环次数是n,因此增加函数为:F(n)=nlogn,因此阶次为O(nlogn)。

结对及互评

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

按照这么多年以来的惯例,每到学期之初,我就应该在此立下誓言:这个学期开始我要好好学习、每天向上,多读书,多看报,少吃零食,多睡觉。事件

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 0/0 1/1 8/8

参考资料

相关文章
相关标签/搜索