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

教材学习内容总结

概述

  • 软件工程:是一门关于高质量软件开发的技术和理论的学科,用来控制开发过程,实现高质量的软件。
  • 软件工程的目标:正确性、可靠性、健壮性、可用性、可维护性、可重用性、可移植性、运行效率。
    对于可靠性和健壮性这两个较难区分的特征我的理解是:可靠性可以看做一个人容易不容易生病,健壮性可以看成一个人生病后恢复的难易程度,是身体强壮康复快还是落下病根罒ω罒

    1333122-20180909183822439-312506221.png

  • 程序=数据结构+算法 ;软件=程序+软件工程
  • 数据结构:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
  • 常用的数据结构比如栈(先入后出)和队列(先入先出)

算法分析

  • 算法分析:是对一个算法需要多少计算时间和存储空间作定量的分析。算法是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。算法分析是计算机科学的一个基础,并涉及多种技术和概念。
  • 算法效率:算法效率是指算法执行的时间,算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量,通常是CPU的使用时间。
  • 增长函数:表示问题(n)大小与我们希望最优化的值之间的关系。该函数表示了该算法的时间复杂度(CPU的使用时间)或空间复杂度(内存空间)。
  • 渐进复杂度(随着n增加时增长函数的一般性质)称为算法的阶次。算法的阶次是忽略该算法的增长函数中的常量和其他次要项,只保留主项而得出的。
  • 大O记法/O():与问题大小无关、执行时间恒定的增长函数称为具有O(1)的复杂度。
  • 1333122-20180909183849013-2132058034.png

  • 具有相同阶次的算法,从运行效率的角度来说都认为是等价的。
  • 更快的CPU只能给函数增加常量,增加的值是固定的,而算法分析可以随着函数的变化提高增值,所以不能通过提高处理器速度来替代算法分析。
  • 1333122-20180909183903247-2141422033.png

  • 增长函数的比较:
    • n相对较小时各种增长函数的比较
      1333122-20180909183928551-503871513.png

    • n很大时,各种增长函数的比较
      1333122-20180909183936452-1521406251.png

  • 循环运行的时间复杂度分析:循环体的阶次n乘以该循环要运行的次数。
    • 例1:时间复杂度为n * O(1) = O(n)
        for(int count=0;count<n;count++)
    {/*复杂度为O(1)的步骤系列*/
    }
    • 例2:时间复杂度为O(log2(n));进行次数为x,所以2^x=n,x=log2(n),复杂度为O(1),所以为O(log2(n))
    count=1
    while(count<n)
    {count *=2/*复杂度为O(1)的步骤系列*//
    }
  • 嵌套循环的复杂度分析
    • 例1:内层复杂度为O(n),外层为O(n),故为O(n^2)
    for{int count=0;count<n;count++)
    {for(int count2=0;count2<n;count2++){/*复杂度为O(1)的步骤系列*/}
    }
  • 方法调用的复杂度分析
    • 例1:复杂度为printsum方法的复杂度乘以该循环的运行次数,即为O(n)*O(n)=O(n^2)
      printsum方法为
    for (int count=0 ;  count<n; count++)
    {Printsum(count);
    }
    public void printsum(int count)
    {
    int sum =0;
    for(int i=0; i<count; i++)sum += i;
    System.out.println(sum);
    }
    • 例2:增长函数为复杂度相加,f(n)=1+n+n^2;得出时间复杂度为O(n^2)
    public void sample (int n)
    {printsum(n);  //该方法调用复杂度为O(1)for(int count =0;count<n;count++)  //该循环复杂度为O(n)printsum(count);for(int count =0;count<n;count++)  //该循环复杂度为O(n^2)for(int count2 =0;count2<n;count2++)System.out.println(count,count2);
    }

作业解答

  • EX2.1求阶次

    • a.10n^2+100n+1000

      解:阶次是n^2。式子中渐进复杂度最高的是n^2,它的增长速度最快。

    • b.10n^3-7

      解:增长速度最快的是n^3

    • c. 2^n+100n^3

      解:2^n的增长速度大于n^3,所以阶次是2^n

    • d. n^2logn

      解:由于是相乘,所以为原式n^2logn
  • EX2.4

    for(int count = 0 ; count < n ; count++)for(int count2 = 0 ; count2 < n ; count2 = count2 + 2){System.out.println(count,count2);}
    }

    解:外层循环进行次数为n,内层循环为1/2n,所以增长函数f(n)=n* 1/2n=1/2n^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);}
    }

    解:外层循环需要进行次数为n,内层循环需要进行次数为为x,则2^x=n,x=log2(n),所以增长函数是f(n)=nlog2(n),而阶数与增长函数的最高阶项有关,要忽略次项与常数项,阶次是nlog2(n).

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)
积累0/73593/1730/330
第一周0/01/18/8

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • 20172305谭鑫的博客中课本疑难问题解决的很好,内容全面。
    • 20172323王禹涵的博客中课本内容总结详实,感悟深刻。
  • 基于评分标准,我给谭鑫的博客打分:7分。得分情况如下:
    • 问题加分3分
    • 感悟不假大空加1分
    • 排版精美的加1分
      -正确使用Markdown语法加1分
      -模板中的要素齐全加1分
  • 基于评分标准,我给王禹涵的博客打分:5分。得分情况如下:
    • 排版精美的加1分
    • 问题加分1分
    • 感悟不假大空加1分
      -正确使用Markdown语法加1分
      -模板中的要素齐全加1分

感悟

有一段时间没有学习了,假期有点点懈怠,突然学习两章内容,看了很久,感觉还没进入状态比较生疏,有些概念较难分清,新的一学期仍需继续努力,多多联系,对课本的理解要到位,加油吧!

参考

  • 数据结构
  • 算法分析

转载于:https://www.cnblogs.com/YiYiYi/p/9614547.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

activiti api文档_【白银人机】Activiti 工作流从入门到入土:完整 hello world 大比拼(API 结合实例讲解)...

点击上方“好好学java”&#xff0c;选择“置顶”公众号重磅资源、干货&#xff0c;第一时间送达重磅推荐 ① 纯福利 | 公众号资源大汇总&#xff0c;一年才一次&#xff01;② 重磅&#xff01;&#xff01;2018年Java全套入门到进阶学习视频及项目实战③ 2018年java架构师学习…

前端解读控制反转(IOC)

前言 随着前端承担的职责越来越重&#xff0c;前端应用向着复杂化、规模化的方向发展。大型项目模块化是一种趋势&#xff0c;不可避免模块之间要相互依赖&#xff0c;此外还有很多第三方包。这样的话如何去管理这些繁杂的文件&#xff0c;是一个不可避免的话题。此时作为一种…

ASP.NET MVC传递参数(model), 如何保持TempData的持久性

一看到此标题&#xff0c;相信你也会。因为路由是可以从URL地址栏传过去的。但是Insus.NET不想在地址栏传递&#xff0c;还是一个条件是jQuery的Ajax进行POST的。Insus.NET不清楚别人是怎样处理的&#xff0c;但是这个让Insus.NET花上不少时间来解决。Insus.NET实现的方法也很简…

深度学习语音降噪方法对比_人工智能-关于深度学习的基础方法

深度学习概述深度学习的一些简介&#xff0c;其要点如下&#xff1a;深度学习实际上是基于具有多个隐藏层的神经网络的学习&#xff1b;深度学习的思想来源于人类处理视觉信息的方式&#xff1b;深度学习的发展得益于数据的井喷和计算力的飙升&#xff1b;深度学习的理论基础依…

通过adb巧用monkey获取android设备中所有应用的主activity

由于工作需要&#xff0c;想获取所有应用的activity(这里仅限应用的主入口Launcher activity)&#xff0c;搜索了一下&#xff0c;网上实现的方案都是基于android编程实现的&#xff0c;对于不懂开发的测试来说稍有难度&#xff0c;而且对于PC端测试工具来说可行性略差。 给大家…

PWA · 前后端协作 · Node | JTalk 掘金线下活动第七期

通知 余票仅剩 3张&#xff0c;欢迎加入活动群获取更多通知。北京的小伙伴可以关注我们的 JTalk 第八期&#xff1a;前端安全 | 美团点评技术团队专场 ? 报名 扫码报名&#xff1a; 报名链接&#xff1a;点我报名 ? 介绍 本期 JTalk 来杭州啦&#xff01; 掘金线下活动 J…

指数函数中x的取值范围_基本初等函数I: 指数函数、对数函数和幂函数

本文大约4800字, 建议学习时间1个小时.在学习过一次函数和二次函数(修改版)后, 我们知道, 一次函数ykxb当一次项系数k大于零时是增函数, 小于零时是减函数. 二次函数yax2bxc当二次项系数a大于零时图象沿x轴从左向右先减后增, a小于零时先增后减. 可以想象, 次数更高的函数, 在定…

Linux系统之TroubleShooting(启动故障排除)

尽管Linux系统非常强大&#xff0c;稳定&#xff0c;但是我们在使用过程当中&#xff0c;如果人为操作不当&#xff0c;仍然会影响系统&#xff0c;甚至可能使得系统无法开机&#xff0c;无法运行服务等等各种问题。那么这篇博文就总结一下一些常见的故障排除方法&#xff0c;但…

皮肤可配置化:变量、样式分离

之前皮肤开发了一个版本&#xff0c;抽是抽出来了&#xff0c;但是变量只抽出了几个颜色&#xff0c;没什么价值&#xff08;上个版本开发过程&#xff09;&#xff0c; 这次我又进行了一次迭代&#xff0c;现在是一个较成熟的版本了。整体理一下思路&#xff0c;可以总结为3步…

【考试记录】4.8 Path (网络流 —— 劲题)

手抄代码 学习指针 冥思苦想一晚上终于——在一瞬间开窍了。果然题目都是这样&#xff1a;突破了一个点&#xff0c;一切都是柳暗花明。 题面描述&#xff1a; 样例&#xff1a; 这道题目&#xff0c;首先注意到给定的边的性质&#xff1a;这些边在平面上构成了一棵树&#x…

Servlet 3.0概述

Servlet 3.0 –具有许多突破性的功能&#xff0c;这些功能最终将改变开发人员编写和编写JEE Web应用程序的方式–有人可能会说&#xff0c;它的约定违背了我们对事物在理论上“应该”如何工作的大多数理解&#xff0c;但这就是其中之一。创新和持续改进&#xff1b; 挑战公约并…

MySQL(介绍,安装,密码操作,权限表)

一、数据库介绍1、数据库相关概念a、支持并发b、锁的问题c、对客户端请求进行认证d、存取效率&#xff08;降低IO次数&#xff09;数据库服务器&#xff08;本质就是一个台计算机&#xff0c;该计算机之上安装有数据库管理软件的服务端&#xff09;数据库管理管理系统RDBMS&…

matlab如何测两点的角度_【邢不行|量化小讲堂系列01-Python量化入门】如何快速上手使用Python进行金融数据分析...

引言:邢不行的系列帖子“量化小讲堂”&#xff0c;通过实际案例教初学者使用python进行量化投资&#xff0c;了解行业研究方向&#xff0c;希望能对大家有帮助。【历史文章汇总】请点击此处【必读文章】&#xff1a;【邢不行|量化小讲堂系列27-Python量化入门】EOS期现套利&…

结对项目

一、【Coding.Net项目地址】https://git.coding.net/verde/Pair_Work.git 二、【对接口进行的设计】 看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节&#xff0c;说明你们在结对编程中是如何利用这些方法对接口进行设计的。 如下图SRC的…

国家开放大学形成性考核 统一资料 参考试题

试卷代号&#xff1a;1174 水工钢筋混凝土结构&#xff08;本&#xff09;参考试题 一、选择题&#xff08;每小题2分&#xff0c;共20分&#xff0c;在所列备选项中&#xff0c;选1项正确的或最好的作为答案&#xff0c;将选项号填入各题的括号中&#xff09; 1.钢筋混凝土结…

两个向量之间的夹角公式_向量的内积

向量的内积也叫向量的数量积、点积。我们定义两个向量的内积是一个数: 其中 是这两个向量的夹角。 对于向量的内积,最重要的一个结论是: 定理1:两向量垂直的充分必要条件是它们的内积为 0,即 这个定理我们几乎不用证明了,因为从定义来看,如果两个向量都不零向量,则只能…

springcloud 入门 10 (eureka高可用)

eureka高可用: 说白了&#xff0c;就是加一个实例作为原实例的备份&#xff0c;然后一起对外提供服务。这样可以保证在一台机器宕机的时候&#xff0c;整个系统不会死掉。保证其继续对外服务。 eureka的集群化&#xff1a; 服务注册中心Eureka Server&#xff0c;是一个实例&am…

为什么REST如此重要

这篇文章致力于REST&#xff0c;一种塑造Web服务的体系结构风格&#xff0c;以及IT历史上最容易被误解的概念。 这篇文章针对的是那些正在设计Web服务api的人&#xff0c;他们并未完全了解REST的实际含义。 我想给你个主意。 这篇文章也发给了那些想知道REST意味着什么的人&…

你真的懂js获取可视区宽高吗

可能你会觉得获取可视区宽高不是很简单吗 原生js获取高度不就是就window.innerHeight一句话的事&#xff0c;可是真的这么简单吗 来看个测试页面,如果页面带有横向纵向的滚动条&#xff0c;我们打印出各个高度进行查看对比 顺便你也可以看看document.body和document.documentEl…

詹金斯的Maven报告

代码质量是一个敏感的话题。 它会影响您的维护成本以及客户满意度。 更不用说您的开发人员使用代码的动力。 谁想要修复难看的代码&#xff0c;对吗&#xff1f; 讨论代码质量总是需要事实和数字&#xff01; 因此&#xff0c;这是一个简短的教程&#xff0c;介绍如何创建一些…