zoukankan      html  css  js  c++  java
  • 20172313 2018-2019-1 《程序设计与数据结构》第一周学习总结

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

    教材学习内容总结

    • 第一章 概述
      • 软件工程是一门关于高质量软件开发的技术和理论的学科。
      • 软件开发解决的问题为控制开发过程,实现高质量的软件。
        • 软件必须有效使用诸如CPU时间和内存之类的资源。
        • 质量特征必须优先考虑,并可能最大化。

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

      程序=数据结构+算法
      软件=程序+软件工程

    • 第二章 算法分析

      • 算法效率通常用CPU使用时间来表示,算法分析是从效率的角度对算法进行分析,是计算机科学的基础。
      • 增长函数表示与该问题大小相对应的时间或空间的使用。增长函数表示问题大小与我们希望最优化的值之间的关系。该函数表示了该算法的时间复杂度或空间复杂度。如果算法的运行效率低。那么从长远来说,使用更快的处理器也无济于事。
      • 要分析算法的复杂度,通常需要分析循环的运行。循环的时间复杂度等于循环体的复杂度乘以该循环运行的次数。额分析嵌套循环的复杂度时,必须将内层循环和外层循环都考虑进来。
      • 大O计法:忽略该算法的增长函数中的常量和其他次要项,只保留主项而得出的。
      • 一些增长函数及其渐进复杂度

    • 增长函数的比较

    • 当n增加时,各类增长函数差距也会拉大。

    • 规律及总结

    教材中的问题及解决过程

    • 问题一:可移植性是软件的质量特征之一,那么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)
      • 2n+100n3
      • 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)

    • 内层循环是n/2,外层循环是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,所以为O(nlog2n)。

    结对及互评

    • 博客中值得学习的或问题:
      • 排版精美,对于问题研究得很细致,解答也很周全。
    • 代码中值得学习的或问题:
      • 代码写的很规范,思路很清晰,继续加油!

    点评过的同学博客和代码

    • 本周结对学习情况

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

      在家瘫了一个多月后,终于又回到学校了(笑)。在上个学期有收获,有感慨,有付出,也有回报。暑假里没有了在学校学习的氛围,自然也是懈怠了不少,能力感觉到确实有所下降。虽说在暑期内做了一个小app,但练习量是远远不够的,代码还是必须要多敲才能熟练运用并掌握。至于博客,显然在暑假内是没有写过的,现在开学,这个习惯仍然要捡起来,坚持下去。在这个学期里要继续努力,更好的提升自己!

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    第一周 200/200 1/2 5/20
    • 计划学习时间:10小时

    • 实际学习时间:5小时

    参考资料

  • 相关阅读:
    Git中使用.gitignore忽略文件的推送
    git stash详解
    Git撤销&回滚操作(git reset 和 get revert)
    git rebase和git merge的区别
    git撤销已经push到远程仓库上的代码
    Git Merge
    git cherry-pick 教程
    Failed to start LSB: Bring up/down错误解决方法
    linux centos7安装部署gitlab服务器
    CentOs7 HP找回root密码
  • 原文地址:https://www.cnblogs.com/yu-kunpeng/p/9610243.html
Copyright © 2011-2022 走看看