20172305 2018-2019-1 《Java软件结构与数据结构》第一周学习总结
20172305 2018-2019-1 《Java软件结构与数据结构》第一周学习总结
教材学习内容总结
本周内容主要为书第一章和第二章的内容:
第一章
- 软件质量:
- 正确性(软件达到特定需求的程度)
- 可靠性(软件发生故障的频率和危害程度)
- 健壮性(很好处理错误情况的情况)
- 可用性(用户在软件中掌握和运行任务的容易程度)
- 可维护性(软件进行修改的容易程度)
- 可重用性(软件组件可被其他软件系统开发使用的容易程度)
- 可移植性(软件组成可用于多种计算机环境中的容易程度)
- 运行效率(不浪费资源的情况下软件完成其目标的程度)
- 数据结构(计算机存储、组织数据的方式):数组 栈 队列 链表 二叉树 哈希表 堆 图
- 程序 = 数据结构 + 算法
- 软件 = 程序 + 软件工程
- 软件质量:
第二章
算法分析
大O记法(实质上是算法复杂度发展趋势的反应)

增长函数:表示问题(n)大小与我们希望最优化的值之间的关系
- 时间复杂度(定量描述了该算法的运行时间)--CPU使用时间
- 空间复杂度(运行完一个程序所需内存的大小)--内存空间
渐进复杂度称为算法的阶次(忽略该算法的增长函数中的常量和其他次要项,只保留主项而得出的)
教材学习中的问题和解决过程
问题1:提高CPU的速度并不一定能提高处理速度
问题1解决方案:算法的阶次为常量[即复杂度为O(1)]或是线性阶次[即复杂度为O(n)],提高CPU速度才会线性地提高处理速度。随着算法复杂度的增长,处理器的速度对复杂度的影响越来越小。不同的复杂度,在提高相同倍速的处理器,其运行效率是不同的。

- <img src="https://images2018.cnblogs.com/blog/1333004/201809/1333004-20180909143824857-1738430688.png"width="10%"height="30%"/>
- <img src="https://images2018.cnblogs.com/blog/1333004/201809/1333004-20180909144017888-818385398.png"width="10%"height="30%"/>
- <img src="https://images2018.cnblogs.com/blog/1333004/201809/1333004-20180909144048327-1940351079.png"width="10%"height="30%"/>
问题2:时间复杂度的分析
问题2解决方案:
- 循环的时间复杂度等于循环体的复杂度乘以该循环运行次数。时间复杂度O(n)
for(int count = 0;count<n;count++)
{
//*复杂度为O(1)的步骤系列
}
- 循环出现嵌套时,循环的复杂度等于内层循环的复杂度乘以外层循环的复杂度。时间复杂度O(n^2)
for(int count = 0;count < n;count++)
{
for(int count2 = 0;count2<n;count2++)
{
//复杂度为O(1)的步骤系列
}
}
- 方法调用的复杂度,要考虑循环体的阶和调用方法的阶。时间复杂度O(n^2)
for(int count = 0;count<n;count++)
{
printsum(count);
}
public void printsum(int count)
{
int sum = 0;
for(int I = 1;I<count;I++)
sum += I;
System.out.println(sum);
}
问题3:增长函数的比较
问题3的解决方案:增长函数函数图
- n较小时:

- n较大时:

- 结论:c < log2N < n < n * Log2N < n^2 < n^3 < 2^n < 3^n < n!
- n较小时:
- (1)下列增长函数的阶次是多少?

- (2)请确定下面代码段的增长函数和阶次

- 答案:

- (3)请确定下面代码段的增长函数和阶次

- 答案:

结对与互评
点评(王禹涵)
- 博客中值得学习的或问题:
- 没有什么问题,很完美的博客。
- 基于评分标准,我给本博客打分:5分。
- 得分情况如下:
- 正确使用Markdown语法(加1分)
- 模板中的要素齐全(加1分)
- 教材学习中的问题和解决过程, 一个问题加1分
- 代码调试中的问题和解决过程, 无问题
- 感想,体会不假大空的加1分
- 点评认真,能指出博客和代码中的问题的加1分
点评(方艺雯)
- 博客中值得学习的或问题:
- 图片运用恰当,很清晰的解释了问题和相关内容
- 基于评分标准,我给本博客打分:6分。
- 得分情况如下:
- 正确使用Markdown语法(加1分)
- 模板中的要素齐全(加1分)
- 教材学习中的问题和解决过程, 二个问题加2分
- 代码调试中的问题和解决过程, 无个问题
- 感想,体会不假大空的加1分
- 点评认真,能指出博客和代码中的问题的加1分
互评对象
本周结对学习情况
20172314方艺雯
20172323王禹涵结对学习内容:软件质量 算法分析 增长函数 大O记法 时间复杂度 空间复杂度
感悟
本学期的第一篇博客,又到当初写博客的时候了(ಥ_ಥ)。一口气学了两章内容,好在两章内容不是很多,随便翻了一下书,发现大部分是栈、队列以及链表之类的,开始系统的学习算法结构与分析。假期里做了几个程序没有让自己忘了太多的内容,捡起来也会容易得多。上学期在程序设计的课上取得满分,所以这学期要保持上学期的精神状态继续学习。作为新大二的学生,我更要为新大一的学弟学妹做个好头。加油!(ง •̀_•́)ง
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 0/0 | 1/1 | 15/15 |
参考资料
20172305 2018-2019-1 《Java软件结构与数据结构》第一周学习总结的更多相关文章
- 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结
20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...
- 《JAVA程序设计》_第一周学习总结
20175217吴一凡 <java程序设计> 第一周学习总结 虽然已经做好了心理准备,但第一周的学习任务着实让我忙了整整三天,还是挺充实的吧.寒假已经在自己的电脑上安装好了虚拟机,我就在我 ...
- 201521145048《Java程序设计管理》第一周学习总结
1. 本周学习总结 学习并了解Java的发展与历史 在网上视频中学习Java 了解并区分JVM JRE JDK 将java与已学语言做比较,发现相同处 2. 书面作业 Q1.为什么java程序可以跨平 ...
- 20172329 2018-2019《Java软件结构与数据结构》第一周学习总结
2018-2019-20172329 <Java软件结构与数据结构>第一周学习总结 在这学期就已经大二了,也已经步入了学习专业课的核心时间,在这个阶段,我们应该了解自己的学习情况,针对自己 ...
- 20172305 2018-2019-1 《Java软件结构与数据结构》第五周学习总结
20172305 2018-2019-1 <Java软件结构与数据结构>第五周学习总结 教材学习内容总结 本周内容主要为书第九章内容: 查找是在某个项目组中寻找到某一指定目标元素,或者确定 ...
- 20172305 2018-2019-1 《Java软件结构与数据结构》第七周学习总结
20172305 2018-2019-1 <Java软件结构与数据结构>第七周学习总结 教材学习内容总结 本周内容主要为书第十一章内容: 二叉查找树(附加属性的二叉树) 二叉查找树是对树中 ...
- 20172305 2018-2019-1 《Java软件结构与数据结构》第三周学习总结
20172305 2018-2019-1 <Java软件结构与数据结构>第三周学习总结 教材学习内容总结 本周内容主要为书第五章内容: 队列 线性集合(元素从一端加入,另一端删除) 先进先 ...
- 20172305 2018-2019-1 《Java软件结构与数据结构》第四周学习总结
20172305 2018-2019-1 <Java软件结构与数据结构>第四周学习总结 教材学习内容总结 本周内容主要为书第六章内容: 列表 有序列表(元素按照元素内在特性进行排序) 无序 ...
- 20172305 2018-2019-1 《Java软件结构与数据结构》第二周学习总结
20172305 2018-2019-1 <Java软件结构与数据结构>第二周学习总结 教材学习内容总结 本周内容主要为书第三章和第四章的内容: 第三章(以数组来替代栈的作用) 集合(聚集 ...
- 20172305 2018-2019-1 《Java软件结构与数据结构》第九周学习总结
20172305 2018-2019-1 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 本周内容主要为书第十五章内容: 图(结点和结点之间的连接构成) 顶点:结点 边:结 ...
随机推荐
- 使用jQuery实现向上循环滚动效果(超简单)
今天突发奇想 想到的一个新思路 通过使用animate改变外边距达到滚动效果 再用复制节点插入到最后一行达到循环目的 HTML代码如下 <body> <ul style=" ...
- Java分布式锁之数据库方式实现
之前的文章<Java分布式锁实现>中列举了分布式锁的3种实现方式,分别是基于数据库实现,基于缓存实现和基于zookeeper实现.三种实现方式各有可取之处,本篇文章就详细讲解一下Java分 ...
- 【mongodb用户和身份认证管理】
admin系统库用户管理 #移除 #查看 特定的数据库用户管理 #添加 #修改密码
- django的render的特殊用法
以前都是将模板渲染好, 传输到前端, 但是现在前后端分离了, 模板渲染引擎还有用, 而且很好用. 比如在渲染一个表格的时候, 每一行都有两个操作按钮, 并且这个按钮上是有a标签的 你可以使用字符串拼接 ...
- 安装jenkins环境之jdk8
Launchpad PPA Repositories是很有用的非ubuntu官方的第三方个人资源库,可以很方便地安装第三方软件. 但是在运行add-apt-repository命令时,有时会提示命令不 ...
- Python学习手册之类和继承
在上一篇文章中,我们介绍了 Python 的函数式编程,现在我们介绍 Python 的类和继承. 查看上一篇文章请点击:https://www.cnblogs.com/dustman/p/100106 ...
- 企业网站被黑 dedecms漏洞修复办法
前段时间网站被黑了,从百度打开网站直接被劫持跳转到了彩票,du博网站上去,网站的首页index.html文件也被篡改成一些什么北京sai车,pk10,一些cai票的关键词内容,搞得网站根本无法正常浏览 ...
- Simple, Poetic, Pithy
源自:Rob Pike points out Simple, Poetic, Pithy Don't communicate by sharing memory, share memory by co ...
- go基础语法-常量与枚举
1.常量定义 用const关键字修饰常量名并赋值,常量命名不同于java等语言,golang中一般用小写,因为在golang中首字母大写表示public权限 const a = 3 2.常量使用 使用 ...
- java 第八章 异常处理
一.异常简介 (一)定义: 运行期间出现的错误,而不是编译时的语法错误 例如: 1.打开一个不存在的文件 2.网络连接中断 3.数学类错误 4.操作数组越界等 (二)异常的继承树 (三)异常类的体系结 ...