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软件结构与数据结构>第九周学习总结 教材学习内容总结 本周内容主要为书第十五章内容: 图(结点和结点之间的连接构成) 顶点:结点 边:结 ...
随机推荐
- 在Java中用正则表达式判断一个字符串是否是数字的方法
package chengyujia; import java.util.regex.Pattern; public class NumberUtil { /** * 判断一个字符串是否是数字. * ...
- 利用SoapUI 测试web service的一些问题总结
总结两个利用SoapUI 测试web service的一些问题: 1.请求一个soap service 请求的时候:按照下面的配置输入请求地址后, 2.根据实际service接口的需要,传入相应的参数 ...
- 第3章 jQuery中的DOM操作
parent() .parents().closest() 区别示例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...
- 「PHP」策略模式
引言 所属:行为型模式,常用设计模式之一 学习资料: <大话设计模式>程杰 模式概述 分享一篇关于策略模式讲的很好的文章,大家可以参考一下:https://www.cn ...
- STM32 uart 单线半双工模式(cube版本)
STM32 uart 单线半双工模式(cube版本) 1.引言 在某些场合下需要进行三线制串口通信(信号线只有一根),这就要求进行单线半双工的模式进行通信.在这种情况进行数据协议传输的过程中,信号端需 ...
- Python学习 :正则表达式
正则表达式 python 使用正则表达式(re)来进行匹配引擎搜索 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串” 关于正则表达式 ...
- 第5天 Java基础语法
第5天 Java基础语法 今日内容介绍 方法 方法 方法概述 在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法. 如:小明同学在路边准备坐车来学校学习.这就面临着一件事情(坐车到学校这 ...
- 《TCP/IP详解 卷1:协议》系列分享专栏
<TCP/IP详解卷1:协议>是一本详细的TCP/IP协议指南,计算机网络历久不衰的经典著作之一. 作者理论联系实际,使读者可以轻松掌握TCP/IP的知识.阅读对象为计算机专业学生.教师以 ...
- BZOJ1452_Count_KEY
题目传送门 二维树状数组,对于每个颜色开一个树状数组,用容斥求解. code: #include <cstdio> using namespace std; int read() { ') ...
- 北京Uber优步司机奖励政策(1月21日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...