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

时间:2021-09-16 10:25:02

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

教材学习内容总结

第一章 概述

  • 软件工程:一门关于高质量软件开发的技术和理论的学科
  • 软件质量的特征:正确性,可靠性,健壮性,可用性,可维护性,可重用性,可移植性,运行效率
    # 20172320 《程序设计与数据结构》第一周学习总结
  • 数据结构:计算机存储、组织数据的方式
  • 程序=数据结构+算法
    软件=程序+软件工程

第二章 算法分析

  • 算法分析是计算机科学的基础
  • 算法效率通常用CPU的使用时间表示
  • 增长函数:表示问题(n)大小与我们希望最优化的值之间的关系。该函数表示了该算法的时间复杂度或空间复杂度
  • 渐进复杂度:增长函数的界限,由增长函数的主项确定。渐进复杂度类似的函数,归为相同类型的函数
  • 大O记法
    # 20172320 《程序设计与数据结构》第一周学习总结
  • 增长函数的比较
    # 20172320 《程序设计与数据结构》第一周学习总结
    n相对较小时的比较
    # 20172320 《程序设计与数据结构》第一周学习总结
    n相对较大时的比较
    # 20172320 《程序设计与数据结构》第一周学习总结
  • 循环运行的时间复杂度分析:首先确定某个循环体的阶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

参考资料